| # 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" ] |
| } |