#!/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))
