| # 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.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_method_request.tmpl.go", |
| "codegen/fragment_method_response.tmpl.go", |
| "codegen/fragment_method_response_context.tmpl.go", |
| "codegen/fragment_method_result.tmpl.go", |
| "codegen/fragment_method_unownedresult.tmpl.go", |
| "codegen/fragment_protocol.tmpl.go", |
| "codegen/fragment_protocol_details.tmpl.go", |
| "codegen/fragment_protocol_dispatcher.tmpl.go", |
| "codegen/fragment_protocol_event_handler.tmpl.go", |
| "codegen/fragment_protocol_interface.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_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" ] |
| } |
| |
| golden_test("fidlgen_llcpp_golden_tests") { |
| goldens_dir = "goldens" |
| reformat_goldens_bin = |
| rebase_path("${clang_prefix}/clang-format", "", root_build_dir) |
| 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 = 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" |
| }, |
| ] |
| } |
| } |
| } |
| } |
| |
| 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)", |
| ] |
| } |