|  | # 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") | 
|  |  | 
|  | 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.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_caller_allocate.tmpl.go", | 
|  | "codegen/fragment_reply_managed.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_union.tmpl.go", | 
|  | "codegen/test_base.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" ] | 
|  | } | 
|  |  | 
|  | clang_format = rebase_path("${clang_prefix}/clang-format", "", root_build_dir) | 
|  | reformat_command = "'${clang_format}' --style=google" | 
|  |  | 
|  | golden_test("fidlgen_llcpp_golden_tests") { | 
|  | goldens_dir = "goldens" | 
|  | reformat_goldens_command = reformat_command | 
|  | 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}" | 
|  | include_path = string_replace(info.library, ".", "/") + "/llcpp" | 
|  | entries += [ | 
|  | { | 
|  | golden = "${info.name}.h.golden" | 
|  | generated = "$gen_dir/$include_path/fidl.h" | 
|  | }, | 
|  | { | 
|  | golden = "${info.name}.cc.golden" | 
|  | generated = "$gen_dir/$include_path/fidl.cc" | 
|  | }, | 
|  | { | 
|  | golden = "${info.name}_test_base.h.golden" | 
|  | generated = "$gen_dir/$include_path/fidl_test_base.h" | 
|  | }, | 
|  | ] | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | 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)", | 
|  | ] | 
|  | } |