blob: b99c0f700b9da81fcf0fc5631ee1d4e2fe16c6e2 [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/go/go_binary.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/testing/golden_file.gni")
import("//third_party/protobuf/proto_library.gni")
go_library("virtual_device") {
sources = [
"aemu.go",
"common.go",
"common_test.go",
"qemu.go",
"qemu_test.go",
]
deps = [
":proto",
"//third_party/golibs:github.com/google/go-cmp",
"//tools/build",
"//tools/qemu",
]
}
go_test("virtual_device_test") {
output_name = "virtual_device_test"
gopackages = [ "go.fuchsia.dev/fuchsia/tools/virtual_device" ]
deps = [ ":virtual_device" ]
}
go_library("fvd_lib") {
source_dir = "cmd/fvd"
sources = [ "main.go" ]
deps = [
":proto",
":virtual_device",
"//third_party/golibs:github.com/golang/protobuf",
"//tools/build",
"//tools/lib/jsonutil",
]
}
group("tests") {
testonly = true
deps = [
":pb_go_diff",
":virtual_device_test",
]
}
go_binary("fvd") {
gopackage = "go.fuchsia.dev/fuchsia/tools/virtual_device/cmd/fvd"
deps = [ ":fvd_lib" ]
}
# Generates $root_build_dir/default.fvd.
action("default") {
script = "$host_out_dir/fvd"
outputs = [ "$root_build_dir/default.fvd" ]
args = [
# images.json is built before this target even though it is not a dep.
"--images_json",
rebase_path("$root_build_dir/images.json", root_build_dir),
"--output",
rebase_path(outputs[0], root_build_dir),
"--buildinfo_cpu",
target_cpu,
]
deps = [ ":fvd($host_toolchain)" ]
}
proto_library("proto_lib") {
sources = [ "proto/virtual_device.proto" ]
generate_cc = false
generate_go = true
generate_python = false
}
go_library("proto") {
name = "go.fuchsia.dev/fuchsia/tools/virtual_device/proto"
source_dir = "$root_gen_dir/go-proto-gen/src/tools/virtual_device/proto"
sources = [ "virtual_device.pb.go" ]
deps = [ "//third_party/golibs:github.com/golang/protobuf" ]
non_go_deps = [ ":proto_lib" ]
}
# We keep a checked-in copy of the generated .pb.go file so that regular Go
# toolchain commands work with this code. So make sure the generated file stays
# up to date with the source-of-truth .proto file.
golden_file("pb_go_diff") {
current = "$root_gen_dir/go-proto-gen/src/tools/virtual_device/proto/virtual_device.pb.go"
golden = "proto/virtual_device.pb.go"
deps = [ ":proto_lib_gen" ]
warn_on_changes = false
}