meson support: create meson.build files

This commit contains the meson.build files necessary to build the
project and unit tests. The normal procedure is to run the command
'meson build' followed by ninja -C build. Additionally, service files
are copied to remove autoconf-style naming convention (they cannot be
  removed before autoconf files are removed).

Signed-off-by: Mike Capps <mikepcapps@gmail.com>
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I6cf8f5c1c923a198ad2fb4638843645479fd0498
diff --git a/monitor/meson.build b/monitor/meson.build
new file mode 100644
index 0000000..d708cca
--- /dev/null
+++ b/monitor/meson.build
@@ -0,0 +1,59 @@
+phosphor_fan_monitor_include_directories = include_directories(
+    '.',
+    '..'
+)
+
+sources=[
+    'argument.cpp',
+    'conditions.cpp',
+    'fan.cpp',
+    'fan_error.cpp',
+    'json_parser.cpp',
+    'logging.cpp',
+    'main.cpp',
+    'power_interface.cpp',
+    'system.cpp',
+    'tach_sensor.cpp',
+    '../hwmon_ffdc.cpp'
+]
+
+deps=[
+    json_dep,
+    phosphor_dbus_interfaces_dep,
+    phosphor_logging_dep,
+    sdbusplus_dep,
+    sdeventplus_dep
+]
+
+# Only needed for YAML config
+if get_option('json-config').disabled()
+    fan_monitor_defs_cpp_dep = custom_target(
+        'fan_monitor_defs.cpp',
+        input: files(
+            './gen-fan-monitor-defs.py',
+            conf.get_unquoted('FAN_MONITOR_YAML_FILE'),
+        ),
+        command: [
+            python_prog, '@INPUT0@',
+            '-m','@INPUT1@',
+            '-o','monitor'
+        ],
+        output: 'fan_monitor_defs.cpp'
+    )
+
+    sources += fan_monitor_defs_cpp_dep
+endif
+
+phosphor_fan_monitor = executable(
+    'phosphor-fan-monitor',
+    sources,
+    dependencies: deps,
+    implicit_include_directories: false,
+    include_directories: phosphor_fan_monitor_include_directories,
+    install: true
+)
+
+if(get_option('tests').enabled())
+    subdir('test')
+endif
+
diff --git a/monitor/service_files/json/phosphor-fan-monitor@.service b/monitor/service_files/json/phosphor-fan-monitor@.service
new file mode 100644
index 0000000..34dc600
--- /dev/null
+++ b/monitor/service_files/json/phosphor-fan-monitor@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Phosphor Fan Monitor Daemon
+After=mapper-wait@-xyz-openbmc_project-inventory.service
+
+[Service]
+Restart=on-failure
+ExecStart=/usr/bin/phosphor-fan-monitor
diff --git a/monitor/service_files/yaml/phosphor-fan-monitor-init@.service b/monitor/service_files/yaml/phosphor-fan-monitor-init@.service
new file mode 100644
index 0000000..41c0b3e
--- /dev/null
+++ b/monitor/service_files/yaml/phosphor-fan-monitor-init@.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Phosphor Fan Monitor Initialization
+Wants=obmc-power-on@%i.target
+After=obmc-power-on@%i.target
+Conflicts=obmc-chassis-powered-off@%i.target
+
+[Service]
+Restart=on-failure
+ExecStart=/usr/bin/phosphor-fan-monitor --init
+SyslogIdentifier=phosphor-fan-monitor
+
+[Install]
+WantedBy=obmc-chassis-poweron@%i.target
diff --git a/monitor/service_files/yaml/phosphor-fan-monitor@.service b/monitor/service_files/yaml/phosphor-fan-monitor@.service
new file mode 100644
index 0000000..0819e7c
--- /dev/null
+++ b/monitor/service_files/yaml/phosphor-fan-monitor@.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Phosphor Fan Monitor Daemon
+Conflicts=obmc-chassis-powered-off@%i.target
+
+[Service]
+Restart=on-failure
+ExecStart=/usr/bin/phosphor-fan-monitor --monitor
+SyslogIdentifier=phosphor-fan-monitor
+
+[Install]
+RequiredBy=obmc-fan-control-ready@%i.target
diff --git a/monitor/test/meson.build b/monitor/test/meson.build
new file mode 100644
index 0000000..4955691
--- /dev/null
+++ b/monitor/test/meson.build
@@ -0,0 +1,40 @@
+phosphor_fan_monitor_test_include_directories = include_directories(
+    '../..'
+)
+
+test_deps=[
+    fmt_dep,
+    gmock_dep,
+    gtest_dep,
+    json_dep,
+    phosphor_logging_dep,
+    sdeventplus_dep
+]
+
+test_sources=[
+    files(
+        '../logging.cpp',
+    )
+]
+
+test(
+    'power_off_cause',
+    executable(
+        'power_off_cause',
+        'power_off_cause_test.cpp',
+        dependencies:test_deps,
+        implicit_include_directories: false,
+        include_directories: [phosphor_fan_monitor_test_include_directories]
+    )
+)
+
+test(
+    'power_off_rule_test',
+    executable(
+        'power_off_rule_test',
+        sources:test_sources,
+        dependencies: test_deps,
+        implicit_include_directories: false,
+        include_directories: phosphor_fan_monitor_test_include_directories,
+    )
+)