blob: 2a3fdeb5eb2e778b89b27b60aaa84761a6c35de3 [file] [log] [blame]
# Copyright 2020 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/dist/component_manifest_resources.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//build/rust/rustc_test.gni")
import("//src/sys/build/components.gni")
group("base-resolver") {
testonly = true
deps = [ ":tests" ]
}
group("tests") {
testonly = true
deps = [
":base-resolver-unittests",
"tests",
]
}
base_resolver_deps = [
"//garnet/lib/rust/io_util",
"//sdk/fidl/fuchsia.data:fuchsia.data-rustc",
"//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
"//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
"//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/fuchsia-url",
"//src/lib/syslog/rust:syslog",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:log",
"//third_party/rust_crates:thiserror",
]
rustc_binary("bin") {
name = "base-resolver"
# base-resolver must always be small (even in debug builds) since it is part of the
# Zircon boot image.
force_opt = "z"
configs += [ "//build/config/lto:thinlto" ]
configs -= [ "//build/config/lto:thinlto" ]
configs += [ "//build/config/lto:thinlto" ]
configs -= [ "//build/config/fuchsia:dynamic_rust_standard_library" ]
deps = base_resolver_deps
sources = [ "src/main.rs" ]
}
# A separate rule for tests must be used due to an LLVM crash when using thinlto.
# TODO(fxbug.dev/64371): Merge back into "bin" target with `with_unit_tests = true`.
rustc_test("bin_test") {
name = "base-resolver_bin_test"
source_root = "src/main.rs"
deps = base_resolver_deps + [
":fake_pkgfs",
"//third_party/rust_crates:matches",
]
sources = [ "src/main.rs" ]
}
component_manifest_resources("root-manifest") {
sources = [ "meta/base-resolver.cml" ]
}
fuchsia_component("base-resolver-component") {
manifest = "meta/base-resolver.cml"
deps = [ ":bin" ]
}
# Run with `fx test base-resolver-unittests`.
fuchsia_unittest_package("base-resolver-unittests") {
manifest = "meta/base-resolver-unittests.cml"
deps = [ ":bin_test" ]
}
rustc_library("fake_pkgfs") {
source_root = "src/fake_pkgfs.rs"
deps = [
"//garnet/lib/rust/io_util",
"//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/storage/vfs/rust:vfs",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:futures",
]
sources = [ "src/fake_pkgfs.rs" ]
}
group("bootfs") {
deps = [
":bin",
":root-manifest",
]
}