GPIO Monitor with multiple lines and libgpiod

Added a new GPIO monitor (phosphor-multi-gpio-monitor) which monitors
multiple gpio lines based on their line name or offset. GPIO details
need to be defined in a JSON file and needs to be passed to this daemon.

This uses libgpiod for accessing gpio lines and also uses CLI11 for
parsing input parameter.

Signed-off-by: Vijay Khemka <vijaykhemka@fb.com>
Change-Id: I843e6df8c1159888f2ca628d1f69c1d2294d29d6
diff --git a/meson.build b/meson.build
index 0f4f937..0f94b29 100644
--- a/meson.build
+++ b/meson.build
@@ -15,11 +15,16 @@
 cppfs = meson.get_compiler('cpp').find_library('stdc++fs')
 libevdev = dependency('libevdev')
 libsystemd = dependency('libsystemd')
+libgpiod = dependency('libgpiod')
 phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
 phosphor_logging = dependency('phosphor-logging')
 sdbusplus = dependency('sdbusplus')
 systemd = dependency('systemd')
 
+boost_args = ['-DBOOST_ASIO_DISABLE_THREADS',
+              '-DBOOST_ERROR_CODE_HEADER_ONLY',
+              '-DBOOST_SYSTEM_NO_DEPRECATED']
+
 systemd_system_unit_dir = systemd.get_pkgconfig_variable(
     'systemdsystemunitdir',
     define_variable: ['prefix', get_option('prefix')])
@@ -80,6 +85,19 @@
     ],
 )
 
+executable(
+   'phosphor-multi-gpio-monitor',
+   'gpioMonMain.cpp',
+   'gpioMon.cpp',
+   dependencies: [
+        phosphor_logging,
+        sdbusplus,
+        libgpiod,
+    ],
+    cpp_args: boost_args,
+    install: true,
+)
+
 subdir('gpio-util')
 subdir('presence')
 subdir('test')