| # 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_files.gni") |
| import("//tools/fidl/fidlc/testdata/info.gni") |
| |
| if (is_host) { |
| go_library("codegen") { |
| source_dir = "codegen" |
| deps = [ "//tools/fidl/lib/fidlgen_cpp" ] |
| sources = [ |
| "bits.tmpl", |
| "codegen.go", |
| "decoder_encoder.tmpl", |
| "decoder_encoder_header.tmpl", |
| "decoder_encoder_source.tmpl", |
| "enum.tmpl", |
| "header.tmpl", |
| "source.tmpl", |
| "struct.tmpl", |
| "table.tmpl", |
| "union.tmpl", |
| ] |
| } |
| |
| go_library("main") { |
| deps = [ |
| ":codegen", |
| "//tools/fidl/lib/fidlgen_cpp", |
| ] |
| sources = [ "main.go" ] |
| } |
| |
| go_binary("fidlgen_libfuzzer") { |
| library = ":main" |
| sdk_category = "partner" |
| } |
| |
| golden_files("fidlgen_libfuzzer_golden_tests") { |
| testonly = true |
| |
| formatter = { |
| script = "$root_out_dir/clang-format-wrapper" |
| inputs = [ "${clang_prefix}/clang-format" ] |
| args = [ rebase_path(inputs[0], root_build_dir) ] |
| deps = [ "//tools/fidl/clang-format-wrapper" ] |
| } |
| |
| deps = [] |
| comparisons = [] |
| foreach(info, fidl_testdata_info) { |
| if (info.denylist + [ "fidlgen_libfuzzer" ] - [ "fidlgen_libfuzzer" ] == |
| info.denylist) { |
| deps += [ "${info.target}_libfuzzer_generate($fidl_toolchain)" ] |
| gen_dir = "${info.fidl_gen_dir}/${info.target_name}/libfuzzer" |
| include_path = string_replace(info.library, ".", "/") + "/cpp" |
| comparisons += [ |
| { |
| golden = "goldens/${info.name}.h.golden" |
| candidate = "$gen_dir/$include_path/libfuzzer.h" |
| }, |
| { |
| golden = "goldens/${info.name}.cc.golden" |
| candidate = "$gen_dir/$include_path/libfuzzer.cc" |
| }, |
| { |
| golden = "goldens/${info.name}_decode_encode.h.golden" |
| candidate = "$gen_dir/$include_path/libfuzzer_decode_encode.h" |
| }, |
| { |
| golden = "goldens/${info.name}_decode_encode.cc.golden" |
| candidate = "$gen_dir/$include_path/libfuzzer_decode_encode.cc" |
| }, |
| ] |
| } |
| } |
| } |
| } |
| |
| install_host_tools("host") { |
| deps = [ ":fidlgen_libfuzzer" ] |
| outputs = [ "fidlgen_libfuzzer" ] |
| } |
| |
| group("goldens") { |
| testonly = true |
| |
| deps = [] |
| foreach(info, fidl_testdata_info) { |
| if (info.build_denylist + [ "fidlgen_libfuzzer" ] - |
| [ "fidlgen_libfuzzer" ] == info.build_denylist) { |
| deps += [ "${info.target}_libfuzzer__golden" ] |
| } |
| } |
| } |
| |
| group("tests") { |
| testonly = true |
| deps = [ |
| ":fidlgen_libfuzzer_golden_tests($host_toolchain)", |
| ":goldens", |
| ] |
| } |