# Copyright 2023 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""
Defines baseline profiles processing methods in Android Rules.
"""

load("//rules:visibility.bzl", "PROJECT_VISIBILITY")

visibility(PROJECT_VISIBILITY)
_BASELINE_PROFILE_DIR_SUFFIX = "-baseline-profile/"

def _process(
        ctx,
        transitive_profiles = depset(),
        startup_profiles = [],
        deploy_jar = None,
        has_proguard_specs = False,
        enable_optimizer_integration = False,
        merge_tool = None,
        profgen = None,
        toolchain_type = None):
    """Processes all the transitive baseline profiles.

    Baseline profiles propagated from libraries will be merged, and if optimizer integration is
    enabled, startup profiles will be merged as well, and wildcards in baseline profiles will be
    expanded.

    Args:
      ctx: The context.
      transitive_profiles: Depset. The transitive baseline profiles propagated from android_library
          and aar_import.
      startup_profiles: List. The startup profiles.
      deploy_jar: File. The deploy jar.
      has_proguard_specs: Boolean. Whether to have proguard specs.
      enable_optimizer_integration: Boolean. Whether to use startup profile and baseline profiles in optimization.
      merge_tool: FilesToRunProvider. An executable for merging baseline profiles.
      profgen: FilesToRunProvider: An executable for compiling baseline profiles.
      toolchain_type: Label or String. Toolchain type of the executable used in actions.
    Returns:
      A struct containing all the outputs from processing baseline profiles.
    """

    baseline_profile = None
    startup_profile = None
    if transitive_profiles:
        baseline_profile = _get_profile_artifact(ctx, "static-prof.txt")
        _merge(
            ctx,
            baseline_profile,
            transitive_profiles,
            "MergeBaselineProfiles",
            merge_tool = merge_tool,
            toolchain_type = toolchain_type,
        )

    if has_proguard_specs and enable_optimizer_integration:
        # This is only needed for optimized builds since otherwise the dexer doesn't process this.
        if startup_profiles:
            startup_profile = _get_profile_artifact(ctx, "static-startup-prof.txt")
            _merge(
                ctx,
                output = startup_profile,
                inputs = ctx.files.startup_profiles,
                mnemonic = "MergeStartupProfiles",
                merge_tool = merge_tool,
                toolchain_type = toolchain_type,
            )

        # Wildcards only need to be expanded for optimized builds since if these aren't consumed by
        # the optimizer, they can just be expanded during profile compilation instead.
        # Start-up profiles are not expanded because it shouldn't be necessary as these should
        # contain profiles generated by devices on start-up.
        if baseline_profile:
            expanded_baseline_profile = _get_profile_artifact(ctx, "expanded-static-prof.txt")
            _expand_wildcards(
                ctx,
                output = expanded_baseline_profile,
                deploy_jar = deploy_jar,
                profile = baseline_profile,
                profgen = profgen,
                toolchain_type = toolchain_type,
            )
            baseline_profile = expanded_baseline_profile
    return struct(
        baseline_profile = baseline_profile,
        startup_profile = startup_profile,
    )

def _process_art_profile(
        ctx,
        final_classes_dex,
        merged_profile,
        proguard_output_map = None,
        profgen = None,
        zipper = None,
        toolchain_type = None):
    """ Compiles the merged baseline profile.

    Profiles are compiled with profgen into binary ART profiles. The binary
    profiles will be bundled into the final APK and used at installation time to speed up app
    startup and reduce jank.

    Args:
      ctx: The context.
      final_classes_dex: File. Final classes zip artifact.
      merged_profile: File. The merged profile from transitive baseline profile files.
      proguard_output_map: File. Optional. The proguard output mapping file.
      profgen: FilesToRunProvider. The profgen executable for profile compilation.
      zipper: FilesToRunProvider. An executable for compressing files to an archive.
      toolchain_type: Label or String. Toolchain type of the executable used in actions.
    Returns:
      Provider info containing BaselineProfileProvider for all merged profiles.
    """

    # Profgen
    output_profile = _get_profile_artifact(ctx, "baseline.prof")
    output_profile_meta = _get_profile_artifact(ctx, "baseline.profm")
    profgen_inputs = [final_classes_dex, merged_profile]
    profgen_args = ctx.actions.args()
    profgen_args.add("bin", merged_profile)
    profgen_args.add("--apk", final_classes_dex)
    profgen_args.add("--output", output_profile)
    profgen_args.add("--output-meta", output_profile_meta)
    if proguard_output_map:
        profgen_args.add("--map", proguard_output_map)
        profgen_inputs.append(proguard_output_map)
    ctx.actions.run(
        mnemonic = "GenerateARTProfile",
        executable = profgen,
        progress_message = "Generating Android P-R ART profile for %{label} APK",
        arguments = [profgen_args],
        inputs = profgen_inputs,
        outputs = [output_profile, output_profile_meta],
        use_default_shell_env = True,
        toolchain = toolchain_type,
    )

    # Zip ART profiles
    output_profile_zip = _get_profile_artifact(ctx, "art_profile.zip")
    zip_args = ctx.actions.args()
    zip_args.add("c", output_profile_zip)
    zip_args.add(output_profile.path, format = "assets/dexopt/baseline.prof=%s")
    zip_args.add(output_profile_meta.path, format = "assets/dexopt/baseline.profm=%s")
    ctx.actions.run(
        mnemonic = "ZipARTProfiles",
        executable = zipper,
        progress_message = "Zip ART Profiles for %{label}",
        arguments = [zip_args],
        inputs = [output_profile, output_profile_meta],
        outputs = [output_profile_zip],
        use_default_shell_env = True,
        toolchain = toolchain_type,
    )
    return output_profile_zip

def _get_profile_dir(ctx):
    return ctx.label.name + _BASELINE_PROFILE_DIR_SUFFIX

def _get_profile_artifact(ctx, name):
    return ctx.actions.declare_file(_get_profile_dir(ctx) + name)

def _merge(
        ctx,
        output,
        inputs = [],
        mnemonic = "MergeBaselineProfiles",
        merge_tool = None,
        toolchain_type = None):
    args = ctx.actions.args()
    args.add_all(inputs, before_each = "--input")
    args.add("--output", output)

    ctx.actions.run(
        executable = merge_tool,
        mnemonic = mnemonic,
        arguments = [args],
        inputs = inputs,
        outputs = [output],
        use_default_shell_env = True,
        toolchain = toolchain_type,
    )

def _expand_wildcards(
        ctx,
        output,
        deploy_jar = None,
        profile = None,
        profgen = None,
        toolchain_type = None):
    args = ctx.actions.args()
    args.add("expandWildcards", deploy_jar)
    args.add("--profile", profile)
    args.add("--output", output)

    ctx.actions.run(
        executable = profgen,
        outputs = [output],
        inputs = [deploy_jar, profile],
        arguments = [args],
        mnemonic = "ExpandBaselineProfileWildcards",
        progress_message = "Expanding baseline profile wildcards for %{label} APK",
        toolchain = toolchain_type,
    )

baseline_profiles = struct(
    expand_wildcards = _expand_wildcards,
    get_profile_artifact = _get_profile_artifact,
    process = _process,
    process_art_profile = _process_art_profile,
)
