blob: dbb65c9b9e1bb366903fd68e2b8a631e7997fd92 [file] [log] [blame]
# Copyright 2018 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/fuchsia_test_package.gni")
import("//build/dart/dart_library.gni")
import("//build/dart/dart_test_component.gni")
import("//build/python/python_binary.gni")
_zircon_pkg_root = "$target_gen_dir/zircon"
_zircon_lib_dir = "$_zircon_pkg_root/lib"
python_binary("extract_zircon_constants_bin") {
main_source = "extract_zircon_constants.py"
}
action("generate_zircon_constants") {
inputs = [
"//zircon/system/public/zircon/errors.h",
"//zircon/system/public/zircon/rights.h",
"//zircon/system/public/zircon/types.h",
prebuilt_dart,
]
_output = "$_zircon_lib_dir/src/constants.dart"
outputs = [ _output ]
deps = [ ":extract_zircon_constants_bin" ]
_bin_outputs = get_target_outputs(":extract_zircon_constants_bin")
assert(_bin_outputs == [ _bin_outputs[0] ],
"python_binary produced more than 1 outputs")
script = _bin_outputs[0]
args = [
"--errors",
rebase_path("//zircon/system/public/zircon/errors.h", root_build_dir),
"--rights",
rebase_path("//zircon/system/public/zircon/rights.h", root_build_dir),
"--types",
rebase_path("//zircon/system/public/zircon/types.h", root_build_dir),
"--dart",
rebase_path(prebuilt_dart, root_build_dir),
"--dart-constants",
rebase_path(_output, root_build_dir),
]
}
# dart_library wants sources to be in the same dir, so copy sources to where
# constants.dart is generated in the build output directory.
copy("copy_lib_sources") {
sources = [
"lib/src/channel.dart",
"lib/src/channel_reader.dart",
"lib/src/errors.dart",
"lib/src/eventpair.dart",
"lib/src/fakes/handle.dart",
"lib/src/fakes/handle_disposition.dart",
"lib/src/fakes/handle_waiter.dart",
"lib/src/fakes/system.dart",
"lib/src/fakes/zircon_fakes.dart",
"lib/src/handle_wrapper.dart",
"lib/src/socket.dart",
"lib/src/socket_reader.dart",
"lib/src/vmo.dart",
"lib/zircon.dart",
]
outputs = [ "$_zircon_pkg_root/{{source_target_relative}}" ]
}
# Copy pubspec.yaml to package root as well, because Flutter dependents expect
# it to exist there.
copy("copy_pubspec_yaml") {
sources = [ "pubspec.yaml" ]
outputs = [ "$_zircon_pkg_root/pubspec.yaml" ]
}
dart_library("zircon") {
package_name = "zircon"
null_safe = true
sdk_category = "partner"
package_root = _zircon_pkg_root
abs_sources = get_target_outputs(":copy_lib_sources") +
get_target_outputs(":generate_zircon_constants")
# dart_library expects sources to be relative to lib dir, which defaults to
# $_pkg_root/lib.
sources = rebase_path(abs_sources, _zircon_lib_dir)
# TODO(https://fxbug.dev/63133): Using `deps` makes dart_library think these
# are SDK dependencies (while they are not), and causes gn gen to fail. So
# listing these as `non_dart_deps` until `deps` is fixed to support this.
non_dart_deps = [
":copy_lib_sources",
":copy_pubspec_yaml",
":generate_zircon_constants",
]
}
dart_test_component("unittests_component") {
component_name = "zircon_unittests"
manifest = "meta/zircon_unittests.cmx"
sources = [
"channel_test.dart",
"clock_test.dart",
"eventpair_test.dart",
"handle_disposition_test.dart",
"handle_test.dart",
"socket_test.dart",
"vmo_test.dart",
]
deps = [
":zircon",
"//third_party/dart-pkg/pub/test",
]
}
fuchsia_test_package("zircon_unittests") {
test_components = [ ":unittests_component" ]
}
group("tests") {
testonly = true
deps = [ ":zircon_unittests" ]
}