Introduce build target for bundled data on Windows

On non-Windows platforms, we generate assembly to bundle ICU data.
On Windows however, we previously use a checked in icudt.dll, which
is no longer maintained.

We could use the same assembly approach if we wrap in inline assembly.

Bug: chromium:938223
Change-Id: Ieced205ae2e082a5290bd45499216c6c86751ca1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/deps/icu/+/1503032
Reviewed-by: Jungshik Shin <jshin@chromium.org>
diff --git a/scripts/asm_to_inline_asm.py b/scripts/asm_to_inline_asm.py
new file mode 100644
index 0000000..21d23e8
--- /dev/null
+++ b/scripts/asm_to_inline_asm.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+'''
+Converts a given file in clang assembly syntax to a corresponding
+representation in inline assembly. Specifically, this is used for
+Windows clang builds.
+'''
+
+import argparse
+import sys
+
+def asm_to_inl_asm(in_filename, out_filename):
+  with open(in_filename, 'r') as infile, open(out_filename, 'wb') as outfile:
+    outfile.write('__asm__(\n')
+    for line in infile:
+      # Escape " in .S file before outputing it to inline asm file.
+      line = line.replace('"', '\\"')
+      outfile.write('  "%s\\n"\n' % line.rstrip())
+    outfile.write(');\n')
+  return 0
+
+if __name__ == '__main__':
+  parser = argparse.ArgumentParser(description=__doc__)
+  parser.add_argument('input', help='Name of the input assembly file')
+  parser.add_argument('output', help='Name of the target CC file')
+  args = parser.parse_args()
+  sys.exit(asm_to_inl_asm(args.input, args.output))