blob: 2d4fd540dfe9015ccf10e67e2a5b2e0ddf68d094 [file] [log] [blame]
# Copyright 2019 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/components.gni")
import("//build/fidl/fidl.gni")
import("//build/sdk/sdk.gni")
import("//build/test.gni")
import("//build/testing/environments.gni")
import("//third_party/protobuf/proto_library.gni")
static_library("fidl_codec") {
friend = [ ":tests" ]
public = [
"builtin_semantic.h",
"display_handle.h",
"display_options.h",
"encoder.h",
"json_visitor.h",
"library_loader.h",
"logger.h",
"memory_helpers.h",
"message_decoder.h",
"printer.h",
"proto_value.h",
"semantic.h",
"semantic_parser.h",
"status.h",
"type_visitor.h",
"visitor.h",
"wire_object.h",
"wire_parser.h",
"wire_types.h",
]
sources = [
"builtin_semantic.cc",
"display_handle.cc",
"encoder.cc",
"library_loader.cc",
"logger.cc",
"message_decoder.cc",
"printer.cc",
"proto_value.cc",
"semantic.cc",
"semantic_parser.cc",
"status.cc",
"wire_object.cc",
"wire_parser.cc",
"wire_types.cc",
]
public_deps = [ "//src/lib/fxl" ]
deps = [
":value_proto",
"//sdk/fidl/fuchsia.io:fuchsia.io_hlcpp",
"//sdk/lib/fidl_base",
"//third_party/rapidjson",
"//zircon/system/public",
]
}
proto_library("value_proto") {
proto_in_dir = "//"
sources = [ "//src/lib/fidl_codec/proto/value.proto" ]
generate_python = false
deps = [ "//third_party/protobuf:protobuf_full" ]
}
executable("fidl_codec_test_bin") {
testonly = true
sources = [
"builtin_semantic_test.cc",
"dispatcher_test.cc",
"library_loader_test.cc",
"message_decoder_test.cc",
"printer_test.cc",
"proto_test.cc",
"semantic_parser_test.cc",
"wire_object_test.cc",
"wire_parser_test.cc",
"wire_types_test.cc",
]
deps = [
":fidl_codec",
":fidl_hlcpp",
":json_for_test",
":list_for_test",
":value_proto",
"//sdk/testing/fidl:test",
"//sdk/testing/fidl:test_support",
"//src/lib/fxl/test:gtest_main",
"//third_party/googletest:gmock",
"//third_party/googletest:gtest",
"//third_party/rapidjson",
"//zircon/system/public:public",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/async-loop:async-loop-default",
]
}
fuchsia_unittest_package("fidl-codec-tests") {
deps = [ ":fidl_codec_test_bin" ]
}
group("tests") {
testonly = true
deps = [ ":fidl-codec-tests" ]
}
action("json_for_test") {
testonly = true
deps = [
":fidl($fidl_toolchain)",
":fidl-composed($fidl_toolchain)",
":fidl-sys($fidl_toolchain)",
"//sdk/fidl/fuchsia.io($fidl_toolchain)",
"//sdk/testing/fidl:frobinator($fidl_toolchain)",
]
inputs = [
"${root_build_dir}/fidling/gen/sdk/testing/fidl/frobinator.fidl.json",
"${root_build_dir}/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io.fidl.json",
"${root_build_dir}/fidling/gen/src/lib/fidl_codec/fidl.fidl.json",
"${root_build_dir}/fidling/gen/src/lib/fidl_codec/fidl-composed.fidl.json",
"${root_build_dir}/fidling/gen/src/lib/fidl_codec/fidl-sys.fidl.json",
]
outputs = [ "${target_gen_dir}/library_loader_test_data.h" ]
script = "generate_test_includes.sh"
args = [
rebase_path("${target_gen_dir}/library_loader_test_data.h",
root_build_dir),
"FidlcodecExamples",
] + rebase_path(inputs, root_build_dir)
}
# NB: This exists because the core SDK is too large. It is a subset
# of FIDL definitions in core. If you need to remove a dep in this
# list, please add one to replace it, but make sure that you don't
# inflate the size of list_test_data as generated by :list_for_test
# too large. See fxbug.dev/90389 for more detail.
sdk("stripped_sdk") {
category = "internal"
testonly = true
deps = [
"//sdk/fidl/fuchsia.bluetooth.a2dp:fuchsia.bluetooth.a2dp_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.bluetooth.sys:fuchsia.bluetooth.sys_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.component:fuchsia.component_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.component.decl:fuchsia.component.decl_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.component.runner:fuchsia.component.runner_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.component.test:fuchsia.component.test_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.component.types:fuchsia.component.types_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.data:fuchsia.data_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.diagnostics:fuchsia.diagnostics_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.feedback:fuchsia.feedback_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.input:fuchsia.input_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.inspect:fuchsia.inspect_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.io:fuchsia.io_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.kernel:fuchsia.kernel_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.logger:fuchsia.logger_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.math:fuchsia.math_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.mem:fuchsia.mem_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.net.interfaces:fuchsia.net.interfaces_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.process:fuchsia.process_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.process.lifecycle:fuchsia.process.lifecycle_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.sys:fuchsia.sys_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.sys.test:fuchsia.sys.test_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.sysinfo:fuchsia.sysinfo_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.url:fuchsia.url_sdk($fidl_toolchain)",
]
}
action("list_for_test") {
testonly = true
deps = [ ":stripped_sdk_fidl_json" ]
inputs = [ "${root_gen_dir}/src/lib/fidl_codec/stripped_sdk.fidl_json.txt" ]
outputs = [ "${target_gen_dir}/list_test_data.h" ]
depfile = "${target_gen_dir}/list_test_data.h.d"
script = "generate_test_includes.sh"
args = [
rebase_path("${target_gen_dir}/list_test_data.h", root_build_dir),
"SdkExamples",
"-content",
rebase_path("${root_gen_dir}/src/lib/fidl_codec/stripped_sdk.fidl_json.txt",
root_build_dir),
rebase_path(depfile, root_build_dir),
]
}
fidl("fidl") {
name = "test.fidlcodec.examples"
sources = [
"testdata/empty.test.fidl",
"testdata/reserved_member.test.fidl",
"testdata/types.test.fidl",
"testdata/xunionmigration.fidl",
]
public_deps = [ "//zircon/vdso/zx" ]
}
fidl("fidl-composed") {
name = "test.fidlcodec.composedinto"
sources = [ "testdata/composed_into.test.fidl" ]
public_deps = [ ":fidl" ]
}
fidl("fidl-sys") {
name = "test.fidlcodec.sys"
sources = [ "testdata/sys.test.fidl" ]
public_deps = [ "//zircon/vdso/zx" ]
}