Build: Add support building with meson

Testing:
- Verified all code build as expected in CI and unit tests passed
- Done docker Unit testing

Signed-off-by: Shantappa Teekappanavar <sbteeks@yahoo.com>
Change-Id: Iaa296f85353ceddfd40cd860d41e0a6e3abfac49
diff --git a/checkstop_app.cpp b/checkstop_app.cpp
index 5673284..a708f8e 100644
--- a/checkstop_app.cpp
+++ b/checkstop_app.cpp
@@ -3,7 +3,7 @@
 
 #include <phosphor-logging/elog.hpp>
 
-int main(int argc, char* argv[])
+int main(int /*argc*/, char** /*argv*/)
 {
     using namespace phosphor::logging;
     using error = sdbusplus::org::open_power::Host::Boot::Error::Checkstop;
diff --git a/gen/meson.build b/gen/meson.build
new file mode 100644
index 0000000..af850f2
--- /dev/null
+++ b/gen/meson.build
@@ -0,0 +1,14 @@
+# Generated file; do not modify.
+sdbuspp_gen_meson_ver = run_command(
+    sdbuspp_gen_meson_prog,
+    '--version',
+).stdout().strip().split('\n')[0]
+
+if sdbuspp_gen_meson_ver != 'sdbus++-gen-meson version 2'
+    warning('Generated meson files from wrong version of sdbus++-gen-meson.')
+    warning(
+        'Expected "sdbus++-gen-meson version 2", got:',
+        sdbuspp_gen_meson_ver
+    )
+endif
+
diff --git a/gen/org/meson.build b/gen/org/meson.build
new file mode 100644
index 0000000..6488f22
--- /dev/null
+++ b/gen/org/meson.build
@@ -0,0 +1,2 @@
+# Generated file; do not modify.
+subdir('open_power')
diff --git a/gen/org/open_power/Host/Boot/meson.build b/gen/org/open_power/Host/Boot/meson.build
new file mode 100644
index 0000000..718b2c2
--- /dev/null
+++ b/gen/org/open_power/Host/Boot/meson.build
@@ -0,0 +1,14 @@
+# Generated file; do not modify.
+generated_sources += custom_target(
+    'org/open_power/Host/Boot__cpp'.underscorify(),
+    input: [ meson.project_source_root() / 'org/open_power/Host/Boot.errors.yaml',  ],
+    output: [ 'error.cpp', 'error.hpp',  ],
+    command: [
+        sdbuspp_gen_meson_prog, '--command', 'cpp',
+        '--output', meson.current_build_dir(),
+        '--tool', sdbusplusplus_prog,
+        '--directory', meson.project_source_root(),
+        'org/open_power/Host/Boot',
+    ],
+)
+
diff --git a/gen/org/open_power/Host/meson.build b/gen/org/open_power/Host/meson.build
new file mode 100644
index 0000000..fed2c12
--- /dev/null
+++ b/gen/org/open_power/Host/meson.build
@@ -0,0 +1,16 @@
+# Generated file; do not modify.
+subdir('Boot')
+generated_others += custom_target(
+    'org/open_power/Host/Boot__markdown'.underscorify(),
+    input: [ meson.project_source_root() / 'org/open_power/Host/Boot.errors.yaml',  ],
+    output: [ 'Boot.md' ],
+    command: [
+        sdbuspp_gen_meson_prog, '--command', 'markdown',
+        '--output', meson.current_build_dir(),
+        '--tool', sdbusplusplus_prog,
+        '--directory', meson.project_source_root(),
+        'org/open_power/Host/Boot',
+    ],
+    build_by_default: true,
+)
+
diff --git a/gen/org/open_power/meson.build b/gen/org/open_power/meson.build
new file mode 100644
index 0000000..e5645b3
--- /dev/null
+++ b/gen/org/open_power/meson.build
@@ -0,0 +1,2 @@
+# Generated file; do not modify.
+subdir('Host')
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..0996878
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,92 @@
+project(
+    'openpower-debug-collector',
+    'cpp',
+    meson_version: '>= 0.57.0',
+    default_options: [
+        'warning_level=3',
+        'werror=true',
+        'cpp_std=c++20'
+    ],
+    license: 'Apache-2.0',
+    version: '1.0.0',
+)
+
+systemd = dependency('systemd', required : true)
+
+sdbusplus = dependency(
+    'sdbusplus',
+    fallback: [
+        'sdbusplus',
+        'sdbusplus_dep'
+    ]
+)
+sdbusplusplus_prog = find_program('sdbus++', required : true)
+sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson', required : true)
+
+phosphorlogging = dependency(
+    'phosphor-logging',
+    fallback: [
+        'phosphor-logging',
+        'phosphor_logging_dep'
+    ]
+)
+
+deps = [
+    systemd, sdbusplus, phosphorlogging
+]
+
+realpath_prog = find_program('realpath')
+
+selected_subdirs = []
+selected_subdirs += 'org/open_power'
+
+generated_root = meson.current_build_dir() / 'gen'
+generated_others = []
+generated_sources = []
+
+# Source the generated meson files
+subdir('gen')
+foreach d : selected_subdirs
+    subdir('gen' / d)
+endforeach
+
+# Parse through the list from sdbus++-gendir and put into sets.
+generated_headers = []
+generated_cpp = []
+generated_others_files = []
+
+foreach g : generated_sources generated_others
+    foreach f : g.to_list()
+        rel_path = run_command(
+            realpath_prog,
+            '--relative-to', generated_root,
+            f.full_path(),
+        ).stdout().strip().split('\n')[-1]
+
+        if rel_path.endswith('.hpp')
+            generated_headers += rel_path
+        elif rel_path.endswith('.cpp')
+            generated_cpp += rel_path
+        else
+            generated_others_files += rel_path
+        endif
+    endforeach
+endforeach
+
+executable('watchdog_timeout',
+    'watchdog_timeout.cpp',
+    generated_sources,
+    dependencies: deps,
+    include_directories: include_directories('gen'),
+    implicit_include_directories: true,
+    install: true
+)
+
+executable('checkstop_app',
+    'checkstop_app.cpp',
+    generated_sources,
+    dependencies: deps,
+    include_directories: include_directories('gen'),
+    implicit_include_directories: true,
+    install: true
+)
diff --git a/phosphor-logging/elog-errors.hpp b/phosphor-logging/elog-errors.hpp
new file mode 100644
index 0000000..53f322c
--- /dev/null
+++ b/phosphor-logging/elog-errors.hpp
@@ -0,0 +1,129 @@
+// This file was autogenerated.  Do not edit!
+// See elog-gen.py for more details
+#pragma once
+
+#include <phosphor-logging/elog.hpp>
+#include <phosphor-logging/log.hpp>
+#include <sdbusplus/exception.hpp>
+
+#include <string>
+#include <tuple>
+#include <type_traits>
+
+namespace sdbusplus
+{
+namespace org
+{
+namespace open_power
+{
+namespace Host
+{
+namespace Boot
+{
+namespace Error
+{
+struct WatchdogTimedOut;
+} // namespace Error
+} // namespace Boot
+} // namespace Host
+} // namespace open_power
+} // namespace org
+} // namespace sdbusplus
+
+namespace sdbusplus
+{
+namespace org
+{
+namespace open_power
+{
+namespace Host
+{
+namespace Boot
+{
+namespace Error
+{
+struct Checkstop;
+} // namespace Error
+} // namespace Boot
+} // namespace Host
+} // namespace open_power
+} // namespace org
+} // namespace sdbusplus
+
+namespace phosphor
+{
+
+namespace logging
+{
+
+namespace org
+{
+namespace open_power
+{
+namespace Host
+{
+namespace Boot
+{
+namespace _Checkstop
+{} // namespace _Checkstop
+
+struct Checkstop
+{
+    static constexpr auto L = level::ERR;
+    using metadata_types = std::tuple<>;
+};
+
+} // namespace Boot
+} // namespace Host
+} // namespace open_power
+} // namespace org
+
+namespace details
+{
+
+template <>
+struct map_exception_type<
+    sdbusplus::org::open_power::Host::Boot::Error::Checkstop>
+{
+    using type = org::open_power::Host::Boot::Checkstop;
+};
+
+} // namespace details
+
+namespace org
+{
+namespace open_power
+{
+namespace Host
+{
+namespace Boot
+{
+namespace _WatchdogTimedOut
+{} // namespace _WatchdogTimedOut
+
+struct WatchdogTimedOut
+{
+    static constexpr auto L = level::ERR;
+    using metadata_types = std::tuple<>;
+};
+
+} // namespace Boot
+} // namespace Host
+} // namespace open_power
+} // namespace org
+
+namespace details
+{
+
+template <>
+struct map_exception_type<
+    sdbusplus::org::open_power::Host::Boot::Error::WatchdogTimedOut>
+{
+    using type = org::open_power::Host::Boot::WatchdogTimedOut;
+};
+
+} // namespace details
+
+} // namespace logging
+
+} // namespace phosphor
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
diff --git a/watchdog_timeout.cpp b/watchdog_timeout.cpp
index c479b35..10361f2 100644
--- a/watchdog_timeout.cpp
+++ b/watchdog_timeout.cpp
@@ -3,7 +3,7 @@
 
 #include <phosphor-logging/elog.hpp>
 
-int main(int argc, char* argv[])
+int main(int /*argc*/, char** /*argv*/)
 {
     using namespace phosphor::logging;
     using error =