_DEPS = [
    # internal libraries
    "//sys/loader-api:loader-api",
    "//lib/mem-core:mem-core",
    "//lib/mem-mmu:mem-mmu",
    "//lib/fdt:fdt",
    "//lib/arrayvec:arrayvec",
    # third-party dependencies
    "//third-party:fallible-iterator",
    "//third-party:log",
    "//third-party:cfg-if",
    "//third-party:object",
] + select({
    # `riscv` is the only genuinely riscv64-only dependency; everything above is
    # portable no_std, so on any other bare-metal target the crate builds without it.
    "prelude//cpu/constraints:riscv64": ["//lib/riscv:riscv"],
    "DEFAULT": [],
})

rust_library(
    name = "loader-common",
    srcs = glob(["src/**/*.rs"]),
    crate_root = "src/lib.rs",
    deps = _DEPS,
    incoming_transition = "//build:loader",
    target_compatible_with = ["prelude//cpu/constraints:riscv64"],
    visibility = ["PUBLIC"],
)
