blob: ef3c2de0660cab723679e3781ab830a1ea998db5 [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/fidl/toolchain.gni")
import("//build/testing/golden_test.gni")
import("//build/zircon/migrated_targets.gni")
import("//tools/fidl/fidlc/testdata/info.gni")
config("fidlc_config") {
defines = []
if (defined(fidlc_deprecate_c_unions) && fidlc_deprecate_c_unions) {
defines += [ "FIDLC_DEPRECATE_C_UNIONS" ]
}
}
group("headers") {
public_configs = [ ":headers.config" ]
}
config("headers.config") {
include_dirs = [ "include" ]
}
zx_library("fidl") {
sdk = "source"
sdk_headers = []
sources = [
"lib/c_generator.cc",
"lib/check.cc",
"lib/coded_types_generator.cc",
"lib/diagnostic_types.cc",
"lib/diagnostics_json.cc",
"lib/experimental_flags.cc",
"lib/findings_json.cc",
"lib/flat/attribute_schema.cc",
"lib/flat/attributes.cc",
"lib/flat/availability_step.cc",
"lib/flat/compile_step.cc",
"lib/flat/compiler.cc",
"lib/flat/consume_step.cc",
"lib/flat/name.cc",
"lib/flat/reference.cc",
"lib/flat/resolve_step.cc",
"lib/flat/sort_step.cc",
"lib/flat/transport.cc",
"lib/flat/type_resolver.cc",
"lib/flat/types.cc",
"lib/flat/typespace.cc",
"lib/flat/values.cc",
"lib/flat/verify_steps.cc",
"lib/flat_ast.cc",
"lib/formatter.cc",
"lib/json_generator.cc",
"lib/lexer.cc",
"lib/linter.cc",
"lib/linting_tree_callbacks.cc",
"lib/names.cc",
"lib/ordinals.cc",
"lib/parser.cc",
"lib/raw_ast.cc",
"lib/reporter.cc",
"lib/source_file.cc",
"lib/source_manager.cc",
"lib/source_span.cc",
"lib/span_sequence.cc",
"lib/span_sequence_tree_visitor.cc",
"lib/tables_generator.cc",
"lib/template_string.cc",
"lib/tree_visitor.cc",
"lib/type_shape.cc",
"lib/utils.cc",
"lib/versioning_types.cc",
"lib/virtual_source_file.cc",
]
public_deps = [
"//sdk/lib/fit:headers",
"//third_party/re2",
"//zircon/system/ulib/cmdline:headers",
"//zircon/third_party/ulib/safemath",
]
deps = [
":json_schema",
"//sdk/lib/fit",
"//zircon/system/ulib/cmdline",
]
deps += [ "//third_party/boringssl" ]
configs += [ ":fidlc_config" ]
visibility = [
":fidl-format",
":fidl-lint",
":fidlc",
"tests:*",
"//src/tests/benchmarks/fidl/fidlc:*",
]
}
source_set("json_schema") {
visibility = [ ":*" ]
sources = [ "$target_gen_dir/json_schema.cc" ]
deps = [
":gen-json-schema",
":headers",
]
}
action("gen-json-schema") {
visibility = [ ":json_schema" ]
outputs = [ "$target_gen_dir/json_schema.cc" ]
sources = [ "schema.json" ]
script = "gen-json-schema.sh"
args = rebase_path(outputs, root_build_dir) +
rebase_path(sources, root_build_dir)
}
group("host") {
if (current_os != "fuchsia") {
deps = [ ":fidlc" ]
}
}
if (current_os != "fuchsia") {
zx_host_tool("fidlc") {
sources = [ "compiler/main.cc" ]
deps = [ ":fidl" ]
}
zx_host_tool("fidl-format") {
sources = [ "formatter/main.cc" ]
deps = [ ":fidl" ]
}
zx_host_tool("fidl-lint") {
sources = [
"linter/command_line_options.cc",
"linter/main.cc",
]
deps = [ ":fidl" ]
}
}
if (is_host) {
golden_test("fidlc_golden_tests") {
goldens_dir = "goldens"
deps = []
entries = []
foreach(info, fidl_testdata_info) {
deps += [ "${info.target}($fidl_toolchain)" ]
entries += [
{
golden = "${info.name}.json.golden"
generated = "${info.fidl_gen_dir}/${info.target_name}.fidl.json"
},
{
golden = "${info.name}.tables.c.golden"
generated = "${info.fidl_gen_dir}/${info.target_name}/c/${info.target_name}.fidl.tables.c"
},
]
}
}
}
group("tests") {
testonly = true
deps = [
":fidlc_golden_tests($host_toolchain)",
"testdata:verify_files_exist",
"tests($host_toolchain)",
]
}