build : provide FRU yaml as configurable input

In preparation for the openpower-vpd-parser recipe, make it possible to
provide the FRU data YAML file as a build-configurable input.

Use writefru.yaml as default.

Change-Id: I32dba99bcb6c8dd4da259f907b0499b3192cc412
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
diff --git a/Makefile.am b/Makefile.am
index 7ece020..8065a48 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -19,7 +19,7 @@
 	$(REQ_SCRIPT) \
 	$(REQ_SCRIPT_FILES)
 writefru.hpp: ${REQ_SCRIPT} ${REQ_SCRIPT_FILES}
-	$(AM_V_GEN)$(PYTHON) ${REQ_SCRIPT}
+	$(AM_V_GEN)@FRUGEN@
 
 sbin_PROGRAMS = openpower-read-vpd
 openpower_read_vpd_SOURCES = \
diff --git a/configure.ac b/configure.ac
index 2cb5d9d..aca5495 100644
--- a/configure.ac
+++ b/configure.ac
@@ -42,6 +42,10 @@
     AC_SUBST([OESDK_TESTCASE_FLAGS], [$testcase_flags])
 )
 
+AS_IF([test "x$FRU_YAML" == "x"], [FRU_YAML="writefru.yaml"])
+FRUGEN="$PYTHON $srcdir/writefru.py -i $FRU_YAML"
+AC_SUBST(FRUGEN)
+
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_FILES([Makefile test/Makefile])
 AC_OUTPUT
diff --git a/writefru.py b/writefru.py
index 97418ca..eb5d5b8 100755
--- a/writefru.py
+++ b/writefru.py
@@ -3,10 +3,18 @@
 import os
 import yaml
 from mako.template import Template
+import argparse
 
-if __name__ == '__main__':
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-    with open(os.path.join(script_dir, 'writefru.yaml'), 'r') as fd:
+def main():
+    parser = argparse.ArgumentParser(
+        description="OpenPOWER FRU VPD parser and code generator")
+
+    parser.add_argument(
+        '-i', '--inventory_yaml', dest='inventory_yaml',
+        default='writefru.yaml', help='input inventory yaml file to parse')
+    args = parser.parse_args()
+
+    with open(os.path.join(script_dir, args.inventory_yaml), 'r') as fd:
         yamlDict = yaml.safe_load(fd)
 
         # Render the mako template
@@ -16,3 +24,8 @@
             fd.write(
                 t.render(
                     fruDict=yamlDict))
+
+
+if __name__ == '__main__':
+    script_dir = os.path.dirname(os.path.realpath(__file__))
+    main()