# Copyright 2023 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

load(
    "@fuchsia_sdk//fuchsia:assembly.bzl",
    "BUILD_TYPES",
    "fuchsia_product",
    "fuchsia_product_configuration",
)
load("//build/bazel/assembly:zedboot_image_args.bzl", "ZEDBOOT_IMAGE_ARGS")

package(default_visibility = [
    "//build/bazel/assembly:__subpackages__",
    "//products:__subpackages__",
    "//vendor/google:__subpackages__",
])

fuchsia_product_configuration(
    name = "zedboot_with_fvm",
    product_config_json = {
        "platform": {
            "build_type": BUILD_TYPES.ENG,
            "feature_set_level": "bootstrap",
            "storage": {
                "filesystems": {
                    "image_name": "zedboot",
                    "image_mode": "no_image",
                    "volume": {
                        "fvm": {
                            "data": {
                            },
                            "blob": {
                            },
                        },
                    },
                },
            },
        },
    },
)

fuchsia_product_configuration(
    name = "zedboot",
    product_config_json = {
        "platform": {
            "build_type": BUILD_TYPES.ENG,
            "feature_set_level": "bootstrap",
            "storage": {
                "filesystems": {
                    "image_name": "zedboot",
                    "image_mode": "no_image",
                },
            },
        },
    },
)

[fuchsia_product(
    name = board,
    board_config = "//boards:{}".format(board),
    legacy_bundle = ZEDBOOT_IMAGE_ARGS["legacy_bundle"],
    package_mode = ZEDBOOT_IMAGE_ARGS["package_mode"],
    platform_artifacts = ZEDBOOT_IMAGE_ARGS["platform_artifacts"],
    product_config = "//products/zedboot:zedboot",
) for board in [
    "x64",
    "qemu-x64",
    "arm64",
    "vim3",
    "riscv64",
]]

# TODO(b/282896655): Remove once this is the default and OOT users have switched off of this.
[fuchsia_product(
    name = "{}_with_fxfs".format(board),
    board_config = "//boards:{}".format(board),
    legacy_bundle = ZEDBOOT_IMAGE_ARGS["legacy_bundle"],
    package_mode = ZEDBOOT_IMAGE_ARGS["package_mode"],
    platform_artifacts = ZEDBOOT_IMAGE_ARGS["platform_artifacts"],
    product_config = "//products/zedboot:zedboot",
) for board in [
    "x64",
    "qemu-x64",
    "arm64",
    "vim3",
    "riscv64",
]]

[fuchsia_product(
    name = "{}_with_fvm".format(board),
    board_config = "//boards:{}".format(board),
    legacy_bundle = ZEDBOOT_IMAGE_ARGS["legacy_bundle"],
    package_mode = ZEDBOOT_IMAGE_ARGS["package_mode"],
    platform_artifacts = ZEDBOOT_IMAGE_ARGS["platform_artifacts"],
    product_config = "//products/zedboot:zedboot_with_fvm",
) for board in [
    "x64",
    "qemu-x64",
    "arm64",
    "vim3",
    "riscv64",
]]
