# -*- bazel-starlark -*-
# Copyright 2023 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.
"""Siso configuration for mojo."""

load("@builtin//struct.star", "module")

__filegroups = {}

__handlers = {}

def __step_config(ctx, step_config):
    step_config["rules"].extend([
        {
            "name": "mojo/mojom_bindigns_generator",
            "command_prefix": "python3 ../../mojo/public/tools/bindings/mojom_bindings_generator.py",
            "inputs": [
                "mojo/public/tools/bindings/mojom_bindings_generator.py",
            ],
            "indirect_inputs": {
                "includes": [
                    "*.js",
                    "*.mojom",
                    "*.mojom-module",
                    "*.test-mojom",
                    "*.test-mojom-module",
                    "*.zip",
                ],
            },
            "exclude_input_patterns": [
                "*.stamp",
            ],
            # TODO(crbug.com/1437820): unspecified outputs of mojom_bindings_generator.py
            "outputs_map": {
                "./gen/components/aggregation_service/aggregation_service.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/components/aggregation_service/aggregation_service.mojom-webui.js",
                    ],
                },
                "./gen/components/attribution_reporting/eligibility_error.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/components/attribution_reporting/eligibility_error.mojom-webui.js",
                        "./gen/mojom-webui/components/attribution_reporting/registration_type.mojom-webui.js",
                        "./gen/mojom-webui/components/attribution_reporting/source_registration_error.mojom-webui.js",
                        "./gen/mojom-webui/components/attribution_reporting/trigger_registration_error.mojom-webui.js",
                    ],
                },
                "./gen/components/attribution_reporting/registration.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/components/attribution_reporting/registration.mojom-webui.js",
                    ],
                },
                "./gen/media/capture/mojom/image_capture.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/media/capture/mojom/image_capture.mojom-webui.js",
                    ],
                },
                "./gen/services/device/public/mojom/usb_device.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/services/device/public/mojom/usb_device.mojom-webui.js",
                        "./gen/mojom-webui/services/device/public/mojom/usb_enumeration_options.mojom-webui.js",
                        "./gen/mojom-webui/services/device/public/mojom/usb_manager.mojom-webui.js",
                        "./gen/mojom-webui/services/device/public/mojom/usb_manager_client.mojom-webui.js",
                    ],
                },
                "./gen/services/media_session/public/mojom/audio_focus.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/services/media_session/public/mojom/audio_focus.mojom-webui.js",
                        "./gen/mojom-webui/services/media_session/public/mojom/constants.mojom-webui.js",
                        "./gen/mojom-webui/services/media_session/public/mojom/media_controller.mojom-webui.js",
                        "./gen/mojom-webui/services/media_session/public/mojom/media_session.mojom-webui.js",
                    ],
                },
                "./gen/services/network/public/mojom/attribution.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/services/network/public/mojom/attribution.mojom-webui.js",
                    ],
                },
                "./gen/services/network/public/mojom/schemeful_site.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/services/network/public/mojom/schemeful_site.mojom-webui.js",
                    ],
                },
                "./gen/third_party/blink/public/mojom/quota/quota_manager_host.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/third_party/blink/public/mojom/quota/quota_manager_host.mojom-webui.js",
                        "./gen/mojom-webui/third_party/blink/public/mojom/quota/quota_types.mojom-webui.js",
                    ],
                },
                "./gen/third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom-webui.js",
                        "./gen/mojom-webui/third_party/blink/public/mojom/storage_key/storage_key.mojom-webui.js",
                    ],
                },
                "./gen/ui/base/mojom/ui_base_types.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/ui/base/mojom/ui_base_types.mojom-webui.js",
                        "./gen/mojom-webui/ui/base/mojom/window_open_disposition.mojom-webui.js",
                    ],
                },
                "./gen/ui/gfx/image/mojom/image.mojom.js": {
                    "outputs": [
                        "./gen/mojom-webui/ui/gfx/image/mojom/image.mojom-webui.js",
                    ],
                },
            },
            "restat": True,
            "remote": True,
            "output_local": True,
            "platform": {
                # mojo_bindings_generators.py will run faster on n2-highmem-8
                # than n2-custom-2-3840
                # e.g.
                #  n2-highmem-8: exec: 880.202978ms
                #  n2-custom-2-3840: exec: 2.42808488s
                "gceMachineType": "n2-highmem-8",
            },
        },
    ])
    return step_config

mojo = module(
    "mojo",
    step_config = __step_config,
    filegroups = __filegroups,
    handlers = __handlers,
)
