# Licensed under the Apache-2.0 license
# SPDX-License-Identifier: Apache-2.0

load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
load("@pigweed//pw_build:merge_flags.bzl", "flags_from_dict")
load("@pigweed//pw_kernel:flags.bzl", "KERNEL_DEVICE_COMMON_FLAGS")
load("@rules_rust//rust:defs.bzl", "rust_library")
load("//target/veer:defs.bzl", "TARGET_COMPATIBLE_WITH")

platform(
    name = "veer",
    constraint_values = [
        ":target_veer",
        "@pigweed//pw_kernel/arch/riscv:timer_clint",
        "@pigweed//pw_build/constraints/riscv/extensions:I",
        "@pigweed//pw_build/constraints/riscv/extensions:M",
        "@pigweed//pw_build/constraints/riscv/extensions:C",
        "@pigweed//pw_build/constraints/riscv/extensions:A.not",
        "@pigweed//pw_build/constraints/rust:no_std",
        "@platforms//cpu:riscv32",
        "@platforms//os:none",
    ],
    flags = flags_from_dict(
        KERNEL_DEVICE_COMMON_FLAGS | {
            "@pigweed//pw_kernel/arch/riscv:veer_pic": True,
            "@pigweed//pw_kernel/config:kernel_config": ":config",
            "@pigweed//pw_kernel/subsys/console:console_backend": ":console",
            "@pigweed//pw_log/rust:pw_log_backend": "@pigweed//pw_kernel:log_backend_basic",
        },
    ),
    visibility = [":__subpackages__"],
)

string_flag(
    name = "target_type",
    build_setting_default = "silicon",
    values = [
        "silicon",
        "fpga",
        "emulator",
    ],
)

config_setting(
    name = "silicon",
    flag_values = {":target_type": "silicon"},
)

config_setting(
    name = "fpga",
    flag_values = {":target_type": "fpga"},
)

config_setting(
    name = "emulator",
    flag_values = {":target_type": "emulator"},
)

constraint_value(
    name = "target_veer",
    constraint_setting = "@pigweed//pw_kernel/target:target",
    visibility = [":__subpackages__"],
)

rust_library(
    name = "entry",
    srcs = [
        "entry.rs",
    ],
    crate_features = select({
        ":emulator": ["emulator"],
        ":fpga": ["fpga"],
        ":silicon": ["silicon"],
        "//conditions:default": [],
    }),
    edition = "2024",
    tags = ["kernel"],
    target_compatible_with = TARGET_COMPATIBLE_WITH,
    visibility = [":__subpackages__"],
    deps = [
        ":config",
        "@pigweed//pw_kernel/arch/riscv:arch_riscv",
        "@pigweed//pw_kernel/kernel",
        "@pigweed//pw_kernel/lib/memory_config",
        "@rust_crates//:riscv-rt",
    ],
)

rust_library(
    name = "console",
    srcs = ["console.rs"],
    crate_name = "console_backend",
    edition = "2024",
    target_compatible_with = TARGET_COMPATIBLE_WITH,
    deps = [
        "@pigweed//pw_kernel/arch/riscv:arch_riscv",
        "@pigweed//pw_kernel/kernel",
        "@pigweed//pw_status/rust:pw_status",
        "@rust_crates//:embedded-io",
    ],
)

rust_library(
    name = "config",
    srcs = ["config.rs"],
    crate_features = select({
        ":emulator": ["emulator"],
        ":fpga": ["fpga"],
        ":silicon": ["silicon"],
        "//conditions:default": [],
    }),
    crate_name = "kernel_config",
    edition = "2024",
    target_compatible_with = TARGET_COMPATIBLE_WITH,
    visibility = [":__subpackages__"],
    deps = [
        "@pigweed//pw_kernel/config:kernel_config_interface",
        "@pigweed//pw_kernel/lib/memory_config",
    ],
)

filegroup(
    name = "linker_script_template",
    srcs = ["target.ld.jinja"],
    visibility = [":__subpackages__"],
)
