blob: ccd70a5a74eb9b8fc821c463b91fffe94083c706 [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/config/clang/clang.gni")
import("//build/go/go_binary.gni")
import("//build/go/go_library.gni")
import("//build/host.gni")
import("//build/testing/golden_test.gni")
import("//tools/fidl/fidlc/testdata/info.gni")
if (is_host) {
go_library("gopkg") {
name = "go.fuchsia.dev/fuchsia/tools/fidl/fidlgen_llcpp/..."
deps = [
"//tools/fidl/lib/fidlgen",
"//tools/fidl/lib/fidlgen_cpp",
]
sources = [
"codegen/codegen.go",
"codegen/file_header.tmpl",
"codegen/file_markers.tmpl",
"codegen/file_messaging_header.tmpl",
"codegen/file_messaging_source.tmpl",
"codegen/file_test_base.tmpl",
"codegen/file_types_header.tmpl",
"codegen/file_types_source.tmpl",
"codegen/fragment_bits.tmpl",
"codegen/fragment_const.tmpl",
"codegen/fragment_enum.tmpl",
"codegen/fragment_method_client_impl.tmpl",
"codegen/fragment_method_client_impl_async.tmpl",
"codegen/fragment_method_client_impl_oneway.tmpl",
"codegen/fragment_method_client_impl_sync.tmpl",
"codegen/fragment_method_completer_base.tmpl",
"codegen/fragment_method_request.tmpl",
"codegen/fragment_method_response.tmpl",
"codegen/fragment_method_response_context.tmpl",
"codegen/fragment_method_result.tmpl",
"codegen/fragment_method_unownedresult.tmpl",
"codegen/fragment_protocol.tmpl",
"codegen/fragment_protocol_caller.tmpl",
"codegen/fragment_protocol_client_impl.tmpl",
"codegen/fragment_protocol_details.tmpl",
"codegen/fragment_protocol_dispatcher.tmpl",
"codegen/fragment_protocol_event_handler.tmpl",
"codegen/fragment_protocol_event_sender.tmpl",
"codegen/fragment_protocol_interface.tmpl",
"codegen/fragment_protocol_sync_client.tmpl",
"codegen/fragment_service.tmpl",
"codegen/fragment_struct.tmpl",
"codegen/fragment_table.tmpl",
"codegen/fragment_union.tmpl",
"main.go",
]
}
go_binary("fidlgen_llcpp") {
sdk_category = "partner"
sdk_name = "fidlgen_llcpp_experimental_driver_only_toolchain"
gopackage = "go.fuchsia.dev/fuchsia/tools/fidl/fidlgen_llcpp"
deps = [ ":gopkg" ]
}
golden_test("fidlgen_llcpp_golden_tests") {
goldens_dir = "goldens"
reformat_goldens_bin = "${clang_prefix}/clang-format"
reformat_goldens_args = [ "--style=google" ]
deps = []
entries = []
foreach(info, fidl_testdata_info) {
if (info.denylist + [ "fidlgen_llcpp" ] - [ "fidlgen_llcpp" ] ==
info.denylist) {
deps += [ "${info.target}_llcpp_generate($fidl_toolchain)" ]
gen_dir = "${info.fidl_gen_dir}/${info.target_name}/llcpp"
include_path = "fidl/${info.library}/cpp"
entries += [
{
golden = "${info.name}.h.golden"
generated = "$gen_dir/$include_path/wire.h"
},
{
golden = "${info.name}_test_base.h.golden"
generated = "$gen_dir/$include_path/wire_test_base.h"
},
{
golden = "${info.name}_markers.h.golden"
generated = "$gen_dir/$include_path/markers.h"
},
{
golden = "${info.name}_wire_types.h.golden"
generated = "$gen_dir/$include_path/wire_types.h"
},
{
golden = "${info.name}_wire_types.cc.golden"
generated = "$gen_dir/$include_path/wire_types.cc"
},
{
golden = "${info.name}_wire_messaging.h.golden"
generated = "$gen_dir/$include_path/wire_messaging.h"
},
{
golden = "${info.name}_wire_messaging.cc.golden"
generated = "$gen_dir/$include_path/wire_messaging.cc"
},
]
}
}
}
}
install_host_tools("host") {
deps = [ ":fidlgen_llcpp" ]
outputs = [ "fidlgen_llcpp" ]
}
group("goldens") {
testonly = true
denylist_key = "device_build_denylist"
if (is_host) {
denylist_key = "host_build_denylist"
}
deps = []
foreach(info, fidl_testdata_info) {
if (info[denylist_key] + [ "fidlgen_llcpp" ] - [ "fidlgen_llcpp" ] ==
info[denylist_key]) {
deps += [ "${info.target}_llcpp" ]
}
}
}
group("tests") {
testonly = true
deps = [
":fidlgen_llcpp_golden_tests($host_toolchain)",
":goldens",
":goldens($host_toolchain)",
]
}