diff --git a/Makefile.am b/Makefile.am
index 4f6770d..90651d6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,31 @@
 AM_DEFAULT_SOURCE_EXT = .cpp
 sbin_PROGRAMS = checkstop_app
 
-checkstop_app_SOURCES = checkstop_app.cpp
-checkstop_app_LDFLAGS = $(PHOSPHOR_LOGGING_LIBS)
-checkstop_app_CXXFLAGS = $(PHOSPHOR_LOGGING_CFLAGS)
+nobase_nodist_include_HEADERS = \
+            org/open_power/Host/error.hpp
+
+BUILT_SOURCES = \
+            org/open_power/Host/error.cpp \
+            org/open_power/Host/error.hpp
+
+CLEANFILES = ${BUILT_SOURCES}
+
+checkstop_app_SOURCES = checkstop_app.cpp \
+                        org/open_power/Host/error.cpp
+
+checkstop_app_LDFLAGS = \
+                       $(PHOSPHOR_LOGGING_LIBS) \
+                       $(SDBUSPLUS_LIBS)
+
+checkstop_app_CXXFLAGS = \
+                     $(PHOSPHOR_LOGGING_CFLAGS) \
+                     $(SDBUSPLUS_CFLAGS)
+
+org/open_power/Host/error.hpp: ${top_srcdir}/org/open_power/Host.errors.yaml
+	@mkdir -p `dirname $@`
+	$(SDBUSPLUSPLUS) -r $(srcdir) error exception-header org.open_power.Host > $@
+
+org/open_power/Host/error.cpp: ${top_srcdir}/org/open_power/Host.errors.yaml
+	@mkdir -p `dirname $@`
+	$(SDBUSPLUSPLUS) -r $(srcdir) error exception-cpp org.open_power.Host > $@
+
diff --git a/checkstop_app.cpp b/checkstop_app.cpp
index f3a044b..a67499e 100644
--- a/checkstop_app.cpp
+++ b/checkstop_app.cpp
@@ -1,10 +1,11 @@
 #include <phosphor-logging/elog.hpp>
 #include "elog-errors.hpp"
+#include "org/open_power/Host/error.hpp"
 
 int main(int argc, char* argv[])
 {
     using namespace phosphor::logging;
-    using error = org::open_power::Host::Checkstop;
+    using error = sdbusplus::org::open_power::Host::Error::Checkstop;
     report<error>();
 
     return 0;
diff --git a/configure.ac b/configure.ac
index 476dc72..d862a43 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,6 +15,11 @@
 AX_CXX_COMPILE_STDCXX_14([noext])
 AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CXXFLAGS])
 
+# Check for sdbus++
+AC_PATH_PROG([SDBUSPLUSPLUS], [sdbus++])
+AS_IF([test "x$SDBUSPLUSPLUS" == "x"],
+    AC_MSG_ERROR(["Requires sdbus++"]))
+
 LT_INIT
 
 # Checks for libraries.
diff --git a/elog-errors.hpp b/elog-errors.hpp
index 92dc044..31a2fc5 100644
--- a/elog-errors.hpp
+++ b/elog-errors.hpp
@@ -1,89 +1,89 @@
-// This file was autogenerated.  Do not edit!
-// See elog-gen.py for more details
-#pragma once
-
-#include <string>
-#include <tuple>
-#include <type_traits>
-#include <sdbusplus/exception.hpp>
-#include <phosphor-logging/log.hpp>
-
-namespace sdbusplus
-{
-namespace org
-{
-namespace open_power
-{
-namespace Host
-{
-namespace Error
-{
-    struct Checkstop;
-} // namespace Error
-} // namespace Host
-} // namespace open_power
-} // namespace org
-} // namespace sdbusplus
-
-
-namespace phosphor
-{
-
-namespace logging
-{
-
-namespace org
-{
-namespace open_power
-{
-namespace Host
-{
-namespace _Checkstop
-{
-
-
-}  // namespace _Checkstop
-
-struct Checkstop : public sdbusplus::exception_t
-{
-    static constexpr auto errName = "org.open_power.Host.Checkstop";
-    static constexpr auto errDesc = "Checkstop condition detected";
-    static constexpr auto L = level::ERR;
-    using metadata_types = std::tuple<>;
-
-    const char* name() const noexcept
-    {
-        return errName;
-    }
-
-    const char* description() const noexcept
-    {
-        return errDesc;
-    }
-
-    const char* what() const noexcept
-    {
-        return errName;
-    }
-};
-
-} // namespace Host
-} // namespace open_power
-} // namespace org
-
-
-namespace details
-{
-
-template <>
-struct map_exception_type<sdbusplus::org::open_power::Host::Error::Checkstop>
-{
-    using type = org::open_power::Host::Checkstop;
-};
-
-}
-
-
-} // namespace logging
-
-} // namespace phosphor
+// This file was autogenerated.  Do not edit!
+// See elog-gen.py for more details
+#pragma once
+
+#include <string>
+#include <tuple>
+#include <type_traits>
+#include <sdbusplus/exception.hpp>
+#include <phosphor-logging/log.hpp>
+
+namespace sdbusplus
+{
+namespace org
+{
+namespace open_power
+{
+namespace Host
+{
+namespace Error
+{
+    struct Checkstop;
+} // namespace Error
+} // namespace Host
+} // namespace open_power
+} // namespace org
+} // namespace sdbusplus
+
+
+namespace phosphor
+{
+
+namespace logging
+{
+
+namespace org
+{
+namespace open_power
+{
+namespace Host
+{
+namespace _Checkstop
+{
+
+
+}  // namespace _Checkstop
+
+struct Checkstop : public sdbusplus::exception_t
+{
+    static constexpr auto errName = "org.open_power.Host.Checkstop";
+    static constexpr auto errDesc = "Checkstop condition detected";
+    static constexpr auto L = level::ERR;
+    using metadata_types = std::tuple<>;
+
+    const char* name() const noexcept
+    {
+        return errName;
+    }
+
+    const char* description() const noexcept
+    {
+        return errDesc;
+    }
+
+    const char* what() const noexcept
+    {
+        return errName;
+    }
+};
+
+} // namespace Host
+} // namespace open_power
+} // namespace org
+
+
+namespace details
+{
+
+template <>
+struct map_exception_type<sdbusplus::org::open_power::Host::Error::Checkstop>
+{
+    using type = org::open_power::Host::Checkstop;
+};
+
+}
+
+
+} // namespace logging
+
+} // namespace phosphor
diff --git a/org/open_power/Host.metadata.yaml b/org/open_power/Host.metadata.yaml
deleted file mode 100644
index 39c312f..0000000
--- a/org/open_power/Host.metadata.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-- name: Checkstop
-  level: ERR
