blob: d97e6866fb0b0aa337c3293ab9f6f764529d01a7 [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_llcpp/..."
deps = [
"//garnet/go/src/fidl/compiler/backend/cpp",
"//garnet/go/src/fidl/compiler/backend/types",
]
sources = [
"codegen/codegen.go",
"codegen/codegen_test.go",
"codegen/file_header.tmpl.go",
"codegen/file_source.tmpl.go",
"codegen/fragment_bits.tmpl.go",
"codegen/fragment_client.tmpl.go",
"codegen/fragment_client_async_methods.tmpl.go",
"codegen/fragment_client_sync_methods.tmpl.go",
"codegen/fragment_const.tmpl.go",
"codegen/fragment_enum.tmpl.go",
"codegen/fragment_event_sender.tmpl.go",
"codegen/fragment_protocol.tmpl.go",
"codegen/fragment_reply_c_flavor.tmpl.go",
"codegen/fragment_reply_caller_allocate.tmpl.go",
"codegen/fragment_send_event_c_flavor.tmpl.go",
"codegen/fragment_send_event_caller_allocate.tmpl.go",
"codegen/fragment_service.tmpl.go",
"codegen/fragment_struct.tmpl.go",
"codegen/fragment_sync_event_handler.tmpl.go",
"codegen/fragment_sync_request_caller_allocate.tmpl.go",
"codegen/fragment_sync_request_managed.tmpl.go",
"codegen/fragment_sync_server.tmpl.go",
"codegen/fragment_table.tmpl.go",
"codegen/fragment_type.tmpl.go",
"codegen/fragment_union.tmpl.go",
"main.go",
]
}
go_binary("fidlgen_llcpp") {
gopackage = "go.fuchsia.dev/fuchsia/tools/fidl/fidlgen_llcpp"
deps = [ ":gopkg" ]
}
install_host_tools("host") {
deps = [ ":fidlgen_llcpp" ]
outputs = [ "fidlgen_llcpp" ]
}
if (is_host) {
go_test("fidlgen_llcpp_test") {
gopackages = [ "go.fuchsia.dev/fuchsia/tools/fidl/fidlgen_llcpp/codegen" ]
args = [
"--test_data_dir",
rebase_path("$root_out_dir/test_data/fidlgen", root_build_dir),
"--clang-format",
rebase_path("$root_out_dir/test_data/fidlgen_llcpp", root_build_dir),
]
deps = [
":gopkg",
"//garnet/go/src/fidl/compiler/backend/typestest",
]
non_go_deps = [ ":clang_format" ]
}
host_test_data("clang_format") {
sources = [ "//prebuilt/third_party/clang/$host_platform/bin/clang-format" ]
outputs = [ "$root_out_dir/test_data/fidlgen_llcpp/{{source_file_part}}" ]
}
}
group("goldens") {
testonly = true
denylist = [
# TODO(fxbug.dev/55889): Escape "union" keyword.
"//zircon/tools/fidl/testdata:fidl.test.union",
# TODO(fxbug.dev/62520): Insert enum/bits <-> primitive conversions.
"//zircon/tools/fidl/testdata:fidl.test.consts",
# TODO(fxbug.dev/62523): Make protocol named "Interface" compile.
"//zircon/tools/fidl/testdata:fidl.test.doccomments",
# TODO(fxbug.dev/62526): Fix pcidevice.h include issue.
"//zircon/tools/fidl/testdata:fidl.test.handles",
# TODO(fxbug.dev/62532): Fix many issues.
"//zircon/tools/fidl/testdata:fidl.test.protocolrequest",
]
if (host_toolchain == current_toolchain) {
denylist += [
# TODO(fxbug.dev/62576): Add ifdefs to that handles compile on host.
"//zircon/tools/fidl/testdata:fidl.test.encapsulatedstructs",
"//zircon/tools/fidl/testdata:fidl.test.handlesintypes",
"//zircon/tools/fidl/testdata:fidl.test.nullable",
"//zircon/tools/fidl/testdata/type_aliases:example",
"//zircon/tools/fidl/testdata/type_aliases:someotherlibrary",
# TODO(fxbug.dev/62573): Add ifdefs to that protocols compile on host.
"//zircon/tools/fidl/testdata:fidl.test.bindingsdenylist",
"//zircon/tools/fidl/testdata:fidl.test.emptystruct",
"//zircon/tools/fidl/testdata:fidl.test.error",
"//zircon/tools/fidl/testdata:fidl.test.inheritance",
"//zircon/tools/fidl/testdata:fidl.test.inheritancewithrecursivedecl",
"//zircon/tools/fidl/testdata:fidl.test.protocols",
"//zircon/tools/fidl/testdata:fidl.test.requestflexibleenvelope",
"//zircon/tools/fidl/testdata:fidl.test.service",
"//zircon/tools/fidl/testdata:fidl.test.unionsandwich",
"//zircon/tools/fidl/testdata/foreign_type_in_response_used_through_compose:bottom",
"//zircon/tools/fidl/testdata/foreign_type_in_response_used_through_compose:middle",
"//zircon/tools/fidl/testdata/foreign_type_in_response_used_through_compose:top",
"//zircon/tools/fidl/testdata/placement_of_attributes:example",
"//zircon/tools/fidl/testdata/placement_of_attributes:exampleusing",
"//zircon/tools/fidl/testdata/transitive_dependencies_compose:bottom",
"//zircon/tools/fidl/testdata/transitive_dependencies_compose:middle",
"//zircon/tools/fidl/testdata/transitive_dependencies_compose:top",
# TODO(fxbug.dev/62573): These also have protocols, but are covered by
# earlier denylist entries. When those other issues are fixed, these will
# need to be uncommented.
#"//zircon/tools/fidl/testdata:fidl.test.doccomments",
#"//zircon/tools/fidl/testdata:fidl.test.handles",
#"//zircon/tools/fidl/testdata:fidl.test.handlesintypes",
#"//zircon/tools/fidl/testdata:fidl.test.nullable",
#"//zircon/tools/fidl/testdata:fidl.test.protocolrequest",
#"//zircon/tools/fidl/testdata:fidl.test.union",
]
}
deps = []
foreach(target, fidl_testdata_targets - denylist) {
deps += [ "${target}_llcpp" ]
}
}
group("tests") {
testonly = true
deps = [
":fidlgen_llcpp_test($host_toolchain)",
":goldens",
":goldens($host_toolchain)",
]
}