blob: bc672799cc3162dd2260db9d6d26b1e7f6290a1d [file] [log] [blame]
# Copyright 2019 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/rust/rustc_binary.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")
# This is the main target in this BUILD file. It implicitly contains everything
# in the src/ directory, and implicitly looks for src/main.rs as entry point.
# It intentionally has a long name to avoid naming conflicts, because the
# binaries that are generated are named after the target name, and all binaries
# for Fuchsia live in the same namespace and should be distinct.
rustc_binary("intl_wisdom_server_rust") {
edition = "2018"
with_unit_tests = true
deps = [
"//garnet/examples/intl/wisdom/fidl:wisdom-rustc",
"//sdk/fidl/fuchsia.intl:fuchsia.intl-rustc",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/icu_data/rust/icu_data",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:rust_icu_common",
"//third_party/rust_crates:rust_icu_sys",
"//third_party/rust_crates:rust_icu_ucal",
"//third_party/rust_crates:rust_icu_udat",
"//third_party/rust_crates:rust_icu_udata",
"//third_party/rust_crates:rust_icu_uenum",
"//third_party/rust_crates:rust_icu_uloc",
"//third_party/rust_crates:rust_icu_ustring",
"//third_party/rust_crates:thiserror",
]
non_rust_deps = [ "//third_party/icu" ]
sources = [
"src/main.rs",
"src/wisdom_server_impl.rs",
]
}
# This is the Fuchsia test package which ensures that the generated tests from
# the target above is packaged as a binary and delivered to the Fuchsia device.
# It is intentionally named after the above target, with "_tests" appended, for
# uniformity of naming.
#
# This package's name is also the argument to `fx run-tests`:
#
# fx set --with=//garnet/examples/intl/wisdom:tests
# fx build
# fx serve & # This should perhaps be ran sychronously in another terminal
# fx run-test intl_wisdom_server_rust_tests
# [START icudata]
test_package("intl_wisdom_server_rust_tests") {
deps = [
# This target is implicitly generated by the target
# ":intl_wisdom_server_rust" above, when it has the setting
# "with_unit_tests=true".
":intl_wisdom_server_rust_test",
]
tests = [
{
# The binary corresponding to this test has been generated implicilty by
# the target ":intl_wisdom_server_rust" when it has the setting
# "with_unit_tests=true".
# This implicilty requires a file meta/intl_wisdom_server_rust_bin_test.cmx
# to be present under this directory.
name = "intl_wisdom_server_rust_bin_test"
dest = "intl_wisdom_server_rust_bin_test"
environments = basic_envs
},
]
# [START icudata_resource]
resources = [
{
# Fuchsia's ICU does not have libicudata.so, and the locale data MUST
# be loaded from a file instead.
path = rebase_path("//third_party/icu/common/icudtl.dat")
dest = "icudtl.dat"
},
]
# [END icudata_resource]
}
# [END icudata]
# This group is intentionally named the same as the directory it is in, so that
# the non-test parts of this target can be referred to without looking up the
# contents of this file. Its dependencies are all non-test things in this
# package, which for rust is in practice just a single library or binary.
#
# The rustc_binary can not be just named "server" due to naming conflicts with
# other Fuchsia binaries, see the remark all the way up top at the
# rustc_binary("...") declaration. So we must make do with this indirection.
group("server") {
deps = [ ":intl_wisdom_server_rust" ]
}
# This group contains all tests in this package. It is intentonally given a
# standardized name "tests" so that it could be referred to as ".../wisdom:tests"
# without needing to look into this file to see what the precise target name is.
group("tests") {
testonly = true
deps = [ ":intl_wisdom_server_rust_tests" ]
}