chromium/third_party/opus/convert_rtcd_assembler.py

#!/usr/bin/env python
# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Script for converting celt_pitch_xcorr_arm.s -> celt_pitch_xcorr_arm.S
# using the arm2gnu.pl script.

from __future__ import print_function

import os
import sys


USAGE = ('Usage:\n'
         './convert_rtcd_assembler.py arm2gnu_script input_file output_file')


def main(argv):
  if len(argv) != 3:
    print('Error: You must pass the following arguments:\n'
          ' * arm2gnu_script_path\n'
          ' * input_file\n'
          ' * output_file', file=sys.stderr)
    print(USAGE)
    return 1

  arm2gnu_script = os.path.abspath(argv[0])
  if not os.path.exists(arm2gnu_script):
    print('Error: Cannot find arm2gnu.pl script at: %s.' %
          arm2gnu_script, file=sys.stderr)
    return 2

  input_file = os.path.abspath(argv[1])
  if not os.path.exists(input_file):
    print('Error: Cannot find input file at: %s.' % input_file, file=sys.stderr)
    return 3

  output_file = argv[2]

  # Ensure the output file's directory path exists.
  output_dir = os.path.dirname(output_file)
  if not os.path.exists(output_dir):
    os.makedirs(output_dir)

  cmd = ('perl %s %s | '
         'sed "s/OPUS_ARM_MAY_HAVE_[A-Z]*/1/g" | '
         'sed "/.include/d" '
         '> %s') % (arm2gnu_script, input_file, output_file)
  return os.system(cmd)

if __name__ == '__main__':
  sys.exit(main(sys.argv[1:]))