blob: 384515fc919743708b98d794f0b1596264826e45 [file]
# Licensed under the Apache-2.0 license
exports_files(["src/main.rs"])
load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test")
load("@pigweed//pw_kernel/tooling:rust_app.bzl", "rust_app")
rust_library(
name = "mctp_server_lib",
srcs = [
"src/direct_client.rs",
"src/dispatch.rs",
"src/lib.rs",
"src/server.rs",
],
crate_features = ["direct-client"],
crate_name = "openprot_mctp_server",
edition = "2024",
visibility = ["//visibility:public"],
deps = [
"//services/mctp/api:mctp_api",
"@rust_crates//:heapless",
"@rust_crates//:mctp",
"@rust_crates//:mctp-lib",
"@pigweed//pw_log/rust:pw_log",
],
)
rust_test(
name = "mctp_server_test",
crate = ":mctp_server_lib",
)
# Integration tests — each tests/ file is its own Bazel test target.
# All share tests/common/mod.rs for fixtures (BufferSender, DirectClient, etc.).
# No I2C transport dependency; the mock Sender replaces it entirely.
rust_test(
name = "mctp_server_echo_test",
srcs = [
"tests/echo.rs",
"tests/common/mod.rs",
],
crate_root = "tests/echo.rs",
edition = "2024",
deps = [
":mctp_server_lib",
"//services/mctp/api:mctp_api",
"@rust_crates//:mctp",
"@rust_crates//:mctp-lib",
],
)
rust_test(
name = "mctp_server_dispatch_test",
srcs = [
"tests/dispatch.rs",
"tests/common/mod.rs",
],
crate_root = "tests/dispatch.rs",
edition = "2024",
deps = [
":mctp_server_lib",
"//services/mctp/api:mctp_api",
"@rust_crates//:mctp",
"@rust_crates//:mctp-lib",
],
)
rust_test(
name = "mctp_server_unit_test",
srcs = [
"tests/server_unit.rs",
"tests/common/mod.rs",
],
crate_root = "tests/server_unit.rs",
edition = "2024",
deps = [
":mctp_server_lib",
"//services/mctp/api:mctp_api",
"@rust_crates//:mctp",
"@rust_crates//:mctp-lib",
],
)
rust_test(
name = "mctp_server_integration_test",
srcs = [
"tests/integration.rs",
"tests/common/mod.rs",
],
crate_root = "tests/integration.rs",
edition = "2024",
deps = [
":mctp_server_lib",
"//services/mctp/api:mctp_api",
"@rust_crates//:mctp",
"@rust_crates//:mctp-lib",
],
)
rust_app(
name = "mctp_server",
codegen_crate_name = "app_mctp_server",
srcs = ["src/main.rs"],
crate_features = [
"i2c-polling",
"direct-client",
"in-process-responder",
],
edition = "2024",
system_config = "//target/ast1060-evb/mctp:system_config",
tags = ["kernel"],
visibility = ["//visibility:public"],
deps = [
":mctp_server_lib",
"//services/i2c/api:i2c_api",
"//services/i2c/client:i2c_client",
"//services/mctp/api:mctp_api",
"//services/mctp/transport-i2c:mctp_transport_i2c",
"//services/spdm/transport-mctp:spdm_transport_mctp",
"//target/ast1060-evb/spdm-req-resp-test:mock_platform",
"@rust_crates//:mctp",
"@rust_crates//:mctp-lib",
"@pigweed//pw_kernel/syscall:syscall_user",
"@pigweed//pw_kernel/userspace",
"@pigweed//pw_log/rust:pw_log",
"@pigweed//pw_status/rust:pw_status",
"@oot_crates_no_std//:spdm-lib",
],
)
# In-process SPDM requester variant (AST1060-EVB hardware target).
# Same src/main.rs as mctp_server, different feature set.
# The virt-ast1060-evb variant is expanded inline in
# //target/virt-ast1060-evb/mctp-requester/BUILD.bazel to avoid a
# codegen_crate_name collision (two rust_app rules in the same Bazel package
# cannot share codegen_crate_name).
rust_app(
name = "mctp_server_requester",
codegen_crate_name = "app_mctp_server_requester",
srcs = ["src/main.rs"],
crate_features = [
"i2c-polling",
"direct-client",
"in-process-requester",
],
edition = "2024",
system_config = "//target/ast1060-evb/mctp-requester:system_config",
tags = ["kernel"],
visibility = ["//visibility:public"],
deps = [
":mctp_server_lib",
"//services/i2c/api:i2c_api",
"//services/i2c/client:i2c_client",
"//services/mctp/api:mctp_api",
"//services/mctp/transport-i2c:mctp_transport_i2c",
"//services/spdm/transport-mctp:spdm_transport_mctp",
"//target/ast1060-evb/spdm-req-resp-test:mock_platform",
"@rust_crates//:mctp",
"@rust_crates//:mctp-lib",
"@pigweed//pw_kernel/syscall:syscall_user",
"@pigweed//pw_kernel/userspace",
"@pigweed//pw_log/rust:pw_log",
"@pigweed//pw_status/rust:pw_status",
"@oot_crates_no_std//:spdm-lib",
],
)