meta: add compatible strings for BMCs

Add 'com.meta' hierarchy for Meta (Facebook) and define compatible
strings for the currently supported BMC types.  This will be used
to provide hardware compatibility on BMC update images.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ie8b914784eed88f4f9a8df8e42dfce489d473cfb
diff --git a/gen/com/meson.build b/gen/com/meson.build
index 9a2e068..3727d07 100644
--- a/gen/com/meson.build
+++ b/gen/com/meson.build
@@ -2,3 +2,4 @@
 subdir('google')
 subdir('ibm')
 subdir('intel')
+subdir('meta')
diff --git a/gen/com/meta/Hardware/BMC/meson.build b/gen/com/meta/Hardware/BMC/meson.build
new file mode 100644
index 0000000..b11b263
--- /dev/null
+++ b/gen/com/meta/Hardware/BMC/meson.build
@@ -0,0 +1,15 @@
+# Generated file; do not modify.
+generated_sources += custom_target(
+    'com/meta/Hardware/BMC__cpp'.underscorify(),
+    input: [ '../../../../../yaml/com/meta/Hardware/BMC.interface.yaml',  ],
+    output: [ 'server.cpp', 'server.hpp', 'client.hpp',  ],
+    depend_files: sdbusplusplus_depfiles,
+    command: [
+        sdbuspp_gen_meson_prog, '--command', 'cpp',
+        '--output', meson.current_build_dir(),
+        '--tool', sdbusplusplus_prog,
+        '--directory', meson.current_source_dir() / '../../../../../yaml',
+        'com/meta/Hardware/BMC',
+    ],
+)
+
diff --git a/gen/com/meta/Hardware/meson.build b/gen/com/meta/Hardware/meson.build
new file mode 100644
index 0000000..2f7d6ac
--- /dev/null
+++ b/gen/com/meta/Hardware/meson.build
@@ -0,0 +1,16 @@
+# Generated file; do not modify.
+subdir('BMC')
+generated_others += custom_target(
+    'com/meta/Hardware/BMC__markdown'.underscorify(),
+    input: [ '../../../../yaml/com/meta/Hardware/BMC.interface.yaml',  ],
+    output: [ 'BMC.md' ],
+    depend_files: sdbusplusplus_depfiles,
+    command: [
+        sdbuspp_gen_meson_prog, '--command', 'markdown',
+        '--output', meson.current_build_dir(),
+        '--tool', sdbusplusplus_prog,
+        '--directory', meson.current_source_dir() / '../../../../yaml',
+        'com/meta/Hardware/BMC',
+    ],
+)
+
diff --git a/gen/com/meta/meson.build b/gen/com/meta/meson.build
new file mode 100644
index 0000000..dc845a4
--- /dev/null
+++ b/gen/com/meta/meson.build
@@ -0,0 +1,2 @@
+# Generated file; do not modify.
+subdir('Hardware')
diff --git a/meson.build b/meson.build
index 6a724de..a6bd6c7 100644
--- a/meson.build
+++ b/meson.build
@@ -20,14 +20,17 @@
 
 # Parse options to determine appropriate subdirectories to support.
 selected_subdirs = []
+if get_option('data_com_google')
+    selected_subdirs += 'com/google'
+endif
 if get_option('data_com_ibm')
     selected_subdirs += 'com/ibm'
 endif
 if get_option('data_com_intel')
     selected_subdirs += 'com/intel'
 endif
-if get_option('data_com_google')
-    selected_subdirs += 'com/google'
+if get_option('data_com_meta')
+    selected_subdirs += 'com/meta'
 endif
 if get_option('data_org_freedesktop')
     selected_subdirs += 'org/freedesktop'
diff --git a/meson_options.txt b/meson_options.txt
index eb92c99..c193bbd 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,8 +1,9 @@
 option('generate_md', type: 'boolean', value: true)
 option('libphosphor_dbus', type: 'boolean', value: true)
+option('data_com_google', type: 'boolean', value: true)
 option('data_com_ibm', type: 'boolean', value: true)
 option('data_com_intel', type: 'boolean', value: true)
-option('data_com_google', type: 'boolean', value: true)
+option('data_com_meta', type: 'boolean', value: true)
 option('data_org_freedesktop', type: 'boolean', value: true)
 option('data_org_open_power', type: 'boolean', value: true)
 option('data_xyz_openbmc_project', type: 'boolean', value: true)
diff --git a/yaml/com/meta/Hardware/BMC.interface.yaml b/yaml/com/meta/Hardware/BMC.interface.yaml
new file mode 100644
index 0000000..f8acde5
--- /dev/null
+++ b/yaml/com/meta/Hardware/BMC.interface.yaml
@@ -0,0 +1,13 @@
+description: >
+    This interface is never intended to be instantiated, but is used to define
+    enumerations for Compatible strings.
+
+enumerations:
+    - name: Model
+      description: >
+          Possible BMC types used for compatible strings.
+      values:
+          - name: Bletchley
+          - name: GreatLakes
+          - name: TiogaPass
+          - name: YosemiteV2