blob: dbd855df105905297e2da9a437b4c28c7e478b51 [file] [log] [blame]
# Copyright 2017 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.
import("//build/components.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//build/rust/rustc_test.gni")
common_sources = [
"src/bti.rs",
"src/channel.rs",
"src/clock.rs",
"src/clock_update.rs",
"src/cprng.rs",
"src/debuglog.rs",
"src/event.rs",
"src/eventpair.rs",
"src/exception.rs",
"src/fifo.rs",
"src/futex.rs",
"src/guest.rs",
"src/handle.rs",
"src/info.rs",
"src/interrupt.rs",
"src/iommu.rs",
"src/job.rs",
"src/lib.rs",
"src/pager.rs",
"src/pmt.rs",
"src/port.rs",
"src/process.rs",
"src/profile.rs",
"src/property.rs",
"src/resource.rs",
"src/rights.rs",
"src/signals.rs",
"src/socket.rs",
"src/stream.rs",
"src/task.rs",
"src/thread.rs",
"src/time.rs",
"src/vcpu.rs",
"src/version.rs",
"src/vmar.rs",
"src/vmo.rs",
]
if (is_fuchsia) {
rustc_library("fuchsia-zircon") {
version = "0.3.3"
edition = "2021"
deps = [
":fuchsia-zircon-status",
"//third_party/rust_crates:bitflags",
"//third_party/rust_crates:zerocopy",
"//zircon/vdso:fuchsia-zircon-sys",
]
sources = common_sources
}
}
# LINT.IfChange
rustc_library("fuchsia-cprng") {
version = "0.1.1"
edition = "2021"
with_unit_tests = true
visibility = [ ":*" ]
source_root = "fuchsia-cprng/src/lib.rs"
sources = [ "fuchsia-cprng/src/lib.rs" ]
}
# LINT.ThenChange(BUILD.bazel)
rustc_library("fuchsia-zircon-types") {
version = "0.1.0"
edition = "2021"
source_root = "fuchsia-zircon-types/src/lib.rs"
deps = [ "//third_party/rust_crates:zerocopy" ]
sources = [ "fuchsia-zircon-types/src/lib.rs" ]
features = [ "zerocopy" ]
}
rustc_test("fuchsia-zircon-types-tests") {
name = "fuchsia_zircon_types_tests"
edition = "2021"
source_root = "fuchsia-zircon-types/src/lib.rs"
deps = [ "//third_party/rust_crates:zerocopy" ]
sources = [ "fuchsia-zircon-types/src/lib.rs" ]
features = [ "zerocopy" ]
}
rustc_library("fuchsia-zircon-status") {
version = "0.1.0"
edition = "2021"
source_root = "fuchsia-zircon-status/src/lib.rs"
deps = [ ":fuchsia-zircon-types" ]
sources = [ "fuchsia-zircon-status/src/lib.rs" ]
}
rustc_test("fuchsia-zircon-status-tests") {
name = "fuchsia_zircon_status_tests"
edition = "2021"
source_root = "fuchsia-zircon-status/src/lib.rs"
deps = [ "//src/lib/zircon/rust:fuchsia-zircon-types" ]
sources = [ "fuchsia-zircon-status/src/lib.rs" ]
}
# Certain tests written as unit tests of fuchsia-zircon make use of other
# crates which themselves depend on fuchsia-zircon. This causes
# fuchsia_zircon::foo to be a different type from crate::foo in the context of
# those unit tests when fuchsia-zircon is built with `with_unit_tests = true`.
#
# Since those tests are really integration tests, we should either move them
# into the "other" crates so that the dependency graph flows in only one
# direction, or simply move those tests into a dedicated target and redesignate
# them as integration tests, which they appear to be.
#
# TODO(https://fxbug.dev/42173139): untangle this web.
rustc_test("fuchsia-zircon-unittests") {
edition = "2021"
output_name = "fuchsia_zircon_tests"
deps = [
":fuchsia-zircon-status",
"//third_party/rust_crates:bitflags",
"//third_party/rust_crates:zerocopy",
"//zircon/vdso:fuchsia-zircon-sys",
# Test-only deps
":fuchsia-zircon",
"//sdk/fidl/fuchsia.boot:fuchsia.boot_rust",
"//sdk/fidl/fuchsia.kernel:fuchsia.kernel_rust",
"//src/lib/fdio/rust:fdio",
"//src/lib/fuchsia",
"//src/lib/fuchsia-component",
"//src/lib/fuchsia-runtime",
"//third_party/rust_crates:assert_matches",
"//third_party/rust_crates:test-case",
]
sources = common_sources
}
rustc_binary("exit_with_code_util") {
edition = "2021"
source_root = "test_util/exit_with_code_util.rs"
deps = [ ":fuchsia-zircon" ]
sources = [ "test_util/exit_with_code_util.rs" ]
}
rustc_binary("sleep_forever_util") {
edition = "2021"
source_root = "test_util/sleep_forever_util.rs"
deps = [ ":fuchsia-zircon" ]
sources = [ "test_util/sleep_forever_util.rs" ]
}
fuchsia_unittest_component("fuchsia-cprng_test-component") {
component_name = "fuchsia-cprng"
deps = [ ":fuchsia-cprng_test" ]
}
fuchsia_unittest_component("fuchsia-zircon-status-component") {
component_name = "fuchsia-zircon-status"
deps = [ ":fuchsia-zircon-status-tests" ]
}
fuchsia_unittest_component("fuchsia-zircon-tests-component") {
component_name = "fuchsia-zircon-tests"
manifest = "meta/fuchsia_zircon_tests.cml"
deps = [ ":fuchsia-zircon-unittests" ]
test_type = "system"
}
fuchsia_unittest_component("fuchsia-zircon-types-tests-component") {
component_name = "fuchsia-zircon-types-tests"
deps = [ ":fuchsia-zircon-types-tests" ]
}
fuchsia_test_package("fuchsia-zircon-tests") {
test_components = [
":fuchsia-cprng_test-component",
":fuchsia-zircon-status-component",
":fuchsia-zircon-tests-component",
":fuchsia-zircon-types-tests-component",
]
deps = [
":exit_with_code_util",
":sleep_forever_util",
]
if (current_cpu == "riscv64") {
# TODO(https://fxbug.dev/42081270): Remove this once
# version::tests::get_version_string passes on RISC-V.
test_specs = {
environments = []
}
}
}
group("tests") {
testonly = true
deps = [ ":fuchsia-zircon-tests" ]
}