build: Add meson build for phosphor-host-ipmi

Create meson and meson_options for the existing features.

Removed sample.h/cpp since that is not used at all.

Tested:
Ipmi command works fine the cleanup.
```
$ systemctl status phosphor-ipmi-host
● phosphor-ipmi-host.service - Phosphor Inband IPMI
     Loaded: loaded (/lib/systemd/system/phosphor-ipmi-host.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 1970-01-08 21:20:56 UTC; 21s ago
   Main PID: 24987 (ipmid)
     CGroup: /system.slice/phosphor-ipmi-host.service
             └─24987 /tmp/ipmid

Jan 08 21:20:56 $HOST ipmid[24987]: Registering OEM:[0X002B79], Cmd:[0X30] for Ethstats Commands
Jan 08 21:20:56 $HOST ipmid[24987]: Registering OEM:[0X00C2CF], Cmd:[0X30] for Ethstats Commands
Jan 08 21:20:56 $HOST ipmid[24987]: Registering OEM:[0X002B79], Cmd:[0X32] for Sys Commands
Jan 08 21:20:56 $HOST ipmid[24987]: Registering OEM:[0X002B79], Cmd:[0X02] for I2C
Jan 08 21:20:56 $HOST ipmid[24987]: Registering OEM:[0X00C2CF], Cmd:[0X02] for I2C
Jan 08 21:20:56 $HOST ipmid[24987]: I2C_WHITELIST_CHECK is disabled, do not populate whitelist
Jan 08 21:20:56 $HOST ipmid[24987]: Registering OEM:[0X00C2CF], Cmd:[0X04] for Manual Zone Control
Jan 08 21:20:56 $HOST systemd[1]: Started Phosphor Inband IPMI.
Jan 08 21:20:56 $HOST ipmid[24987]: Loading whitelist filter
Jan 08 21:20:56 $HOST ipmid[24987]: Set restrictedMode = true
(reverse-i-search)`ipmi': systemctl status phosphor-^Cmi-host

$ ipmitool mc info
Device ID                 : 32
Device Revision           : 1
Firmware Revision         : 0.00
IPMI Version              : 2.0
Manufacturer ID           : 7244
Manufacturer Name         : Quanta Computer Inc.
Product ID                : 14426 (0x385a)
Product Name              : Unknown (0x385A)
Device Available          : yes
Provides Device SDRs      : yes
Additional Device Support :
    Sensor Device
    SEL Device
    FRU Inventory Device
    Chassis Device
Aux Firmware Rev Info     :
    0x00
    0x00
    0x00
    0x00
```

Change-Id: Ibaea9eea802b063a0207320654cbb817fde30c2a
Signed-off-by: Willy Tu <wltu@google.com>
diff --git a/user_channel/meson.build b/user_channel/meson.build
new file mode 100644
index 0000000..b7d6a87
--- /dev/null
+++ b/user_channel/meson.build
@@ -0,0 +1,91 @@
+user_channel_inc = include_directories('.')
+
+channellayer_pre = declare_dependency(
+  include_directories: [root_inc, user_channel_inc],
+  dependencies: [
+    crypto,
+    ipmid_dep,
+    phosphor_dbus_interfaces_dep,
+    phosphor_logging_dep,
+    std_cpp_fs,
+    systemd,
+  ])
+
+channellayer_src = [
+  'channel_layer.cpp',
+  'channel_mgmt.cpp',
+  'cipher_mgmt.cpp',
+]
+
+channellayer_lib = library(
+  'channellayer',
+  channellayer_src,
+  implicit_include_directories: false,
+  dependencies: channellayer_pre,
+  version: meson.project_version(),
+  install: true,
+  install_dir: get_option('libdir'),
+  override_options: ['b_lundef=false'])
+
+channellayer_dep = declare_dependency(
+  link_with: channellayer_lib,
+  dependencies: channellayer_pre)
+
+if not get_option('libuserlayer').disabled()
+  userlayer_pre = declare_dependency(
+    include_directories: [root_inc, user_channel_inc],
+    dependencies: [
+      channellayer_dep,
+      crypto,
+      ipmid_dep,
+      phosphor_dbus_interfaces_dep,
+      phosphor_logging_dep,
+      pam,
+      std_cpp_fs,
+      systemd,
+    ])
+
+  userlayer_src = [
+    'user_layer.cpp',
+    'user_mgmt.cpp',
+    'passwd_mgr.cpp',
+  ]
+
+  userlayer_lib = library(
+    'userlayer',
+    userlayer_src,
+    implicit_include_directories: false,
+    dependencies: userlayer_pre,
+    version: meson.project_version(),
+    install: true,
+    install_dir: get_option('libdir'),
+    override_options: ['b_lundef=false'])
+
+  userlayer_dep = declare_dependency(
+    link_with: userlayer_lib,
+    dependencies: userlayer_pre)
+
+  usercmds_pre = declare_dependency(
+    include_directories: [root_inc, user_channel_inc],
+    dependencies: [
+      mapper,
+      phosphor_logging_dep,
+      ipmid_dep,
+      userlayer_dep,
+      channellayer_dep,
+    ])
+
+  usercmds_lib = shared_library(
+    'usercmds',
+    'usercommands.cpp',
+    implicit_include_directories: false,
+    dependencies: usercmds_pre,
+    install: true,
+    install_dir: get_option('libdir') / 'ipmid-providers',
+    override_options: ['b_lundef=false'])
+
+  usercmds_dep = declare_dependency(
+    link_with: usercmds_lib,
+    dependencies: usercmds_pre)
+
+endif