Better way to include default RS headers (*.rsh).

Change-Id: If1435ff983fc4f9b36dc4c3d70348e033957db49
diff --git a/slangdata.py b/slangdata.py
new file mode 100755
index 0000000..d0614f5
--- /dev/null
+++ b/slangdata.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+
+import os, sys
+
+def print_header(var_name):
+  sys.stdout.write("""
+#ifdef __APPLE_CC__
+/*\n\
+ * The mid-2007 version of gcc that ships with Macs requires a\n\
+ * comma on the .section line, but the rest of the world thinks\n\
+ * that's a syntax error. It also wants globals to be explicitly\n\
+ * prefixed with \"_\" as opposed to modern gccs that do the\n\
+ * prefixing for you.\n\
+ */\n\
+.globl _%s\n\
+  .section .rodata,\n\
+  .align 8\n\
+_%s:\n\
+#else\n\
+.globl %s\n\
+  .section .rodata\n\
+  .align 8\n\
+%s:\n\
+#endif\n\
+""" % (var_name, var_name, var_name, var_name))
+
+def file2asm(var_name):
+  print_header(var_name)
+
+  input_size = 0
+  col = 0
+  while True:
+    buf = sys.stdin.read(1024)
+    if len(buf) <= 0:
+      break
+    input_size += len(buf)
+    for c in buf:
+      if col == 0:
+        sys.stdout.write(".byte ")
+      sys.stdout.write("0x%02x" % ord(c))
+      col += 1
+      if col == 16:
+        sys.stdout.write("\n")
+        col = 0
+      elif col % 4 == 0:
+        sys.stdout.write(", ")
+      else:
+        sys.stdout.write(",")
+  # always ends with 0x0 (can fix assembler warnings)
+  if col != 0:
+    sys.stdout.write("0x00")
+    sys.stdout.write("\n")
+
+  # encode file size
+  print_header(var_name + "_size")
+  sys.stdout.write("  .long %d\n" % input_size)
+
+def main(argv):
+  if len(argv) < 2:
+    print "usage: %s <name>" % argv[0]
+    return 1
+
+  file2asm(argv[1])
+
+if __name__ == '__main__':
+  main(sys.argv)