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