# Copyright 2025 The Pigweed Authors
#
# 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
#
#     https://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.

module(
    name = "opentitan_pigweed",
    version = "0.0.1",
)

bazel_dep(name = "bazel_skylib", version = "1.8.2")
bazel_dep(name = "pigweed")
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "rules_go", version = "0.52.0")
bazel_dep(name = "rules_rust", version = "0.66.0")

# Apply patch that adds missing ARM triples to rules_rust
single_version_override(
    module_name = "rules_rust",
    patch_strip = 1,
    patches = [
        "//patches:0003-Add-thumbv6m-and-more-thumbv7m-and-thumbv8m-triples.patch",
    ],
)
bazel_dep(name = "rules_platform", version = "0.1.0")
bazel_dep(name = "rules_python", version = "1.6.3")
bazel_dep(name = "ureg")

git_override(
    module_name = "pigweed",
    commit = "4a682f70c80af6df56b1003a77bd0f9658dae16d",
    remote = "https://github.com/OpenPRoT/pigweed",
)

git_override(
    module_name = "ureg",
    commit = "412ca40146d5d2012417e493b4a01096b04edf4b",
    remote = "https://github.com/chipsalliance/caliptra-ureg",
)

pw_rust = use_extension("@pigweed//pw_toolchain/rust:extensions.bzl", "pw_rust")
pw_rust.toolchain(cipd_tag = "git_revisions:fe5c95d4ae33ec9d7831921e448e2daf8264ea42,7b074fc9362a4a6a5f172dd8936a22fb25eff96b")
use_repo(pw_rust, "pw_rust_toolchains")

register_toolchains(
    "@pigweed//pw_toolchain/host_clang:host_cc_toolchain_linux",
    "@pigweed//pw_toolchain/host_clang:host_cc_toolchain_macos",
    "@pigweed//pw_toolchain/riscv_clang:riscv_clang_cc_toolchain_rv32imc",
    # ARM Cortex-M C++ toolchain (AST1060) - use M3 for soft-float ABI
    "@pigweed//pw_toolchain:cc_toolchain_cortex-m3",
    "@pw_rust_toolchains//:all",
)

crate = use_extension("@rules_rust//crate_universe:extension.bzl", "crate")
crate.from_cargo(
    name = "rust_crates_base",
    cargo_lockfile = "//third_party/crates_io:Cargo.lock",
    manifests = ["//third_party/crates_io:Cargo.toml"],
    # crate_universe's defaults do not include some embedded triples so the
    # triples are listed explicitly.
    supported_platform_triples = [
        # Host platforms
        "aarch64-unknown-linux-gnu",
        "x86_64-unknown-linux-gnu",
        "aarch64-apple-darwin",
        "x86_64-apple-darwin",

        # Target platforms
        "riscv32imc-unknown-none-elf",
        "thumbv7m-none-eabi",
    ],
)
crate.from_cargo(
    name = "oot_crates_no_std",
    cargo_lockfile = "//third_party/crates_io/crates_no_std:Cargo.lock",
    manifests = ["//third_party/crates_io/crates_no_std:Cargo.toml"],
    supported_platform_triples = [
        # Host platforms (required for build scripts)
        "aarch64-unknown-linux-gnu",
        "x86_64-unknown-linux-gnu",
        "aarch64-apple-darwin",
        "x86_64-apple-darwin",
        # Embedded targets
        "thumbv6m-none-eabi",
        "thumbv7m-none-eabi",
        "thumbv7em-none-eabi",
        "thumbv8m.main-none-eabi",
        "riscv32imc-unknown-none-elf",
    ],
)
use_repo(crate, "rust_crates_base", "oot_crates_no_std")

# Create @rust_crates alias repo that routes cortex-m to oot_crates_no_std
oot_rust_crates_ext = use_extension("//third_party/crates_io/rust_crates:extension.bzl", "oot_rust_crates_extension")
use_repo(oot_rust_crates_ext, "rust_crates")

# Override pigweed's rust_crates repo with our aliased version
pw_rust_crates_ext = use_extension("@pigweed//pw_build:pw_rust_crates_extension.bzl", "pw_rust_crates_extension")
override_repo(pw_rust_crates_ext, rust_crates = "rust_crates")

bazel_dep(name = "opentitan_devbundle")
archive_override(
    module_name = "opentitan_devbundle",
    integrity = "sha256-n/0uF/b0uXkEfTzP7QJx/cK1KWExES/Zn/C/EqyXzGo=",
    url = "https://storage.googleapis.com/artifacts.opentitan.org/dev_bundle/devbundle-test-20251105.tar.xz",
)

# ── AST1060 Peripheral Access Crate (svd2rust-generated) ──
ast1060_pac_ext = use_extension(
    "//third_party:ast1060_pac.bzl",
    "ast1060_pac_ext",
)
use_repo(ast1060_pac_ext, "ast1060_pac", "vcell")

# ── Aspeed DDK (bare-metal I2C / GPIO / crypto drivers) ──
aspeed_ddk_ext = use_extension(
    "//third_party:aspeed_ddk.bzl",
    "aspeed_ddk_ext",
)
use_repo(aspeed_ddk_ext, "aspeed_ddk")

nonhermetic_repo = use_repo_rule("//target/earlgrey/tooling/signing:nonhermetic.bzl", "nonhermetic_repo")

nonhermetic_repo(name = "nonhermetic")

hsm = use_extension("//third_party/hsm:extensions.bzl", "hsm")
use_repo(hsm, "cloud_kms_hsm")
