blob: e288afc777febf742234531f198efc1b28b95aa6 [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/go/go_binary.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/host.gni")
import("//build/testing/host_test_data.gni")
import("//zircon/tools/fidl/testdata/targets.gni")
go_library("gopkg") {
name = "go.fuchsia.dev/fuchsia/tools/fidl/fidlgen_rust/..."
deps = [
"//garnet/go/src/fidl/compiler/backend/common",
"//garnet/go/src/fidl/compiler/backend/types",
]
sources = [
"codegen/bits.tmpl.go",
"codegen/codegen.go",
"codegen/codegen_test.go",
"codegen/const.tmpl.go",
"codegen/enum.tmpl.go",
"codegen/ir.go",
"codegen/ir_test.go",
"codegen/protocol.tmpl.go",
"codegen/result.tmpl.go",
"codegen/service.tmpl.go",
"codegen/sourcefile.tmpl.go",
"codegen/struct.tmpl.go",
"codegen/table.tmpl.go",
"codegen/union.tmpl.go",
"main.go",
]
}
go_binary("fidlgen_rust") {
gopackage = "go.fuchsia.dev/fuchsia/tools/fidl/fidlgen_rust"
sdk_category = "partner"
deps = [ ":gopkg" ]
}
install_host_tools("host") {
deps = [ ":fidlgen_rust" ]
outputs = [ "fidlgen_rust" ]
}
if (is_host) {
go_test("fidlgen_rust_test") {
gopackages = [ "go.fuchsia.dev/fuchsia/tools/fidl/fidlgen_rust/codegen" ]
args = [
"--test_data_dir",
rebase_path("$root_out_dir/test_data/fidlgen", root_build_dir),
"--rustfmt",
rebase_path("$root_out_dir/test_data/fidlgen_rust", root_build_dir),
"--rustfmt-toml",
rebase_path("$root_out_dir/test_data/fidlgen_rust/rustfmt.toml",
root_build_dir),
]
deps = [
":gopkg",
"//garnet/go/src/fidl/compiler/backend/typestest",
]
non_go_deps = [ ":rustfmt" ]
}
host_test_data("rustfmt") {
sources = [
"//prebuilt/third_party/rust_tools/$host_platform/bin/rustfmt",
"//rustfmt.toml",
]
outputs = [ "$root_out_dir/test_data/fidlgen_rust/{{source_file_part}}" ]
}
}
group("goldens") {
testonly = true
denylist = [
# TODO(fxbug.dev/52276): Support arrays of all sizes in Rust.
"//zircon/tools/fidl/testdata:fidl.test.arrays",
# TODO(fxbug.dev/62520): Insert enum/bits <-> primitive conversions.
"//zircon/tools/fidl/testdata:fidl.test.consts",
# TODO(fxbug.dev/62524): Fix Ord/Hash trait issue with fidl::Resource.
"//zircon/tools/fidl/testdata:fidl.test.handles",
]
deps = []
foreach(target, fidl_testdata_targets - denylist) {
deps += [ "${target}-rustc" ]
}
}
group("tests") {
testonly = true
deps = [
":fidlgen_rust_test($host_toolchain)",
":goldens",
":goldens($host_toolchain)",
]
}