#!/usr/bin/env python3 # Copyright 2023 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Creates a binary profile from an HRF + dex + mapping.""" import argparse import sys from util import build_utils import action_helpers def main(args): parser = argparse.ArgumentParser(description=__doc__) action_helpers.add_depfile_arg(parser) parser.add_argument('--output-profile', required=True, help='Path to output binary profile.') parser.add_argument('--output-metadata', required=True, help='Path to output binary profile metadata.') parser.add_argument('--profgen', required=True, help='Path to profgen binary.') parser.add_argument('--dex', required=True, help='Path to a zip containing release dex files.') parser.add_argument('--proguard-mapping', help='Path to proguard mapping for release dex.') parser.add_argument('--input-profile-path', required=True, help='Path to HRF baseline profile to apply.') options = parser.parse_args(build_utils.ExpandFileArgs(args)) cmd = [ options.profgen, 'bin', options.input_profile_path, '-o', options.output_profile, '-om', options.output_metadata, '-a', options.dex, ] if options.proguard_mapping: cmd += [ '-m', options.proguard_mapping, ] build_utils.CheckOutput(cmd, env={'JAVA_HOME': build_utils.JAVA_HOME}) action_helpers.write_depfile(options.depfile, options.output_profile, inputs=[options.dex]) if __name__ == '__main__': sys.exit(main(sys.argv[1:]))