#!/usr/bin/env python

# Copyright 2018 the V8 project 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 to convert
embedded.S to embedded.cc 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(b'__asm__(\n')
    for line in infile:
      # Escape " in .S file before outputing it to inline asm file.
      line = line.replace('"', '\\"')
      outfile.write(b'  "%s\\n"\n' % line.rstrip().encode('utf8'))
    outfile.write(b');\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))
