blob: cb88ee4b668eb1f1bd65c7034c45a336ba186ccb [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("//src/graphics/lib/magma/include/virtio/virtmagma_debug.gni")
import("//src/sys/build/components.gni")
group("packages") {
deps = [
":virtio_balloon",
":virtio_block",
":virtio_console",
":virtio_gpu",
":virtio_input",
":virtio_magma",
":virtio_net",
":virtio_rng",
":virtio_wl",
]
}
source_set("device") {
sources = [
"block.h",
"config.h",
"input.h",
"phys_mem.cc",
"phys_mem.h",
"virtio_queue.cc",
"virtio_queue.h",
]
configs += [ "//build/config:all_source" ]
public_deps = [
"//sdk/fidl/fuchsia.virtualization.hardware",
"//sdk/lib/fit",
"//sdk/lib/syslog/cpp",
"//src/lib/fxl",
"//third_party/mesa/include:drm-uapi",
"//zircon/public/lib/async-cpp",
"//zircon/system/ulib/virtio",
]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
source_set("virtio") {
visibility = [ ":*" ]
sources = [
"device_base.h",
"stream_base.h",
]
public_deps = [
":device",
"//sdk/fidl/fuchsia.virtualization.hardware",
"//sdk/lib/sys/cpp",
"//src/lib/fsl",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/async-loop:async-loop-default",
"//zircon/system/ulib/trace",
"//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
]
}
executable("virtio_balloon_bin") {
visibility = [ ":*" ]
output_name = "virtio_balloon"
sources = [ "virtio_balloon.cc" ]
deps = [ ":virtio" ]
}
fuchsia_package_with_single_component("virtio_balloon") {
manifest = "../meta/virtio_balloon.cmx"
deps = [ ":virtio_balloon_bin" ]
}
source_set("block") {
visibility = [ ":*" ]
sources = [
"block_dispatcher.cc",
"block_dispatcher.h",
"qcow.cc",
"qcow.h",
]
public_deps = [
":device",
"//sdk/fidl/fuchsia.io",
"//sdk/lib/syslog/cpp",
"//zircon/public/lib/bitmap",
"//zircon/system/ulib/trace",
]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
executable("virtio_block_bin") {
visibility = [ ":*" ]
output_name = "virtio_block"
sources = [ "virtio_block.cc" ]
deps = [
":block",
":virtio",
]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
fuchsia_package_with_single_component("virtio_block") {
manifest = "../meta/virtio_block.cmx"
deps = [ ":virtio_block_bin" ]
}
executable("virtio_console_bin") {
visibility = [ ":*" ]
output_name = "virtio_console"
sources = [ "virtio_console.cc" ]
deps = [ ":virtio" ]
}
fuchsia_package_with_single_component("virtio_console") {
manifest = "../meta/virtio_console.cmx"
deps = [ ":virtio_console_bin" ]
}
executable("virtio_input_bin") {
visibility = [ ":*" ]
output_name = "virtio_input"
sources = [ "virtio_input.cc" ]
deps = [ ":virtio" ]
}
fuchsia_package_with_single_component("virtio_input") {
manifest = "../meta/virtio_input.cmx"
deps = [ ":virtio_input_bin" ]
}
executable("virtio_gpu_bin") {
visibility = [ ":*" ]
output_name = "virtio_gpu"
sources = [
"gpu_resource.cc",
"gpu_resource.h",
"gpu_scanout.cc",
"gpu_scanout.h",
"guest_view.cc",
"guest_view.h",
"virtio_gpu.cc",
]
deps = [
":virtio",
"//sdk/fidl/fuchsia.ui.app",
"//sdk/fidl/fuchsia.ui.policy",
"//sdk/fidl/fuchsia.ui.scenic",
"//sdk/fidl/fuchsia.ui.views",
"//sdk/lib/ui/scenic/cpp",
"//src/lib/ui/base_view",
]
# TODO(fxb/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
fuchsia_package_with_single_component("virtio_gpu") {
manifest = "../meta/virtio_gpu.cmx"
deps = [ ":virtio_gpu_bin" ]
}
source_set("magma_image") {
visibility = [ ":*" ]
sources = [
"magma_image.cc",
"magma_image.h",
]
deps = [
"//sdk/fidl/fuchsia.scenic.allocation:fuchsia.scenic.allocation_llcpp",
"//sdk/fidl/fuchsia.sysmem",
"//src/graphics/lib/magma/include:magma_abi",
"//src/lib/fsl",
"//src/lib/vulkan",
"//third_party/mesa/include:drm-uapi",
"//zircon/public/lib/zx",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/image-format:image-format-llcpp",
"//zircon/system/ulib/service:service-llcpp",
"//zircon/system/ulib/syslog",
]
}
source_set("virtio_magma_lib") {
visibility = [ ":*" ]
sources = [
"../bits.h",
"virtio_magma.cc",
"virtio_magma.h",
]
deps = [
":magma_image",
":virtio",
"//src/graphics/lib/magma/include:magma_abi",
"//src/graphics/lib/magma/include/virtio",
"//zircon/system/ulib/syslog",
]
public_deps = [ ":virtio_magma_generic" ]
if (virtmagma_debug) {
defines = [ "VIRTMAGMA_DEBUG=1" ]
}
# TODO(fxbug.dev/66436): Fix instances of undefined behavior.
configs += [ "//build/config:temporarily_disable_ubsan_do_not_use" ]
}
executable("virtio_magma_bin") {
visibility = [ ":*" ]
output_name = "virtio_magma"
deps = [
":virtio_magma_lib",
"//src/graphics/lib/magma/src/libmagma",
]
}
executable("virtio_magma_bin_mock_system") {
visibility = [ ":*" ]
testonly = true
output_dir = "$target_out_dir/virtio_magma_mock_system"
output_name = "virtio_magma"
deps = [
":virtio_magma_lib",
"//src/graphics/lib/magma/tests/mock:magma_system",
]
}
resource("virtio_magma_resources") {
sources = [ "${root_build_dir}/linux_x64-shared/libvulkan_intel.so" ]
outputs = [ "drivers/libvulkan_intel.so" ]
}
fuchsia_package_with_single_component("virtio_magma") {
manifest = "../meta/virtio_magma.cmx"
deps = [
":virtio_magma_bin",
# TODO(fxbug.dev/13128): don't hard-code the driver
":virtio_magma_resources",
"//third_party/mesa/src/intel/vulkan:vulkan_intel(//build/toolchain:linux_x64-shared)",
]
}
fuchsia_package_with_single_component("virtio_magma_mock_system") {
testonly = true
manifest = "../meta/virtio_magma.cmx"
deps = [ ":virtio_magma_bin_mock_system" ]
}
executable("virtio_net_bin") {
visibility = [ ":*" ]
output_name = "virtio_net"
sources = [
"guest_ethernet.cc",
"guest_ethernet.h",
"virtio_net.cc",
]
deps = [
":virtio",
"//sdk/fidl/fuchsia.hardware.ethernet:fuchsia.hardware.ethernet",
"//sdk/fidl/fuchsia.netstack",
"//sdk/lib/fit-promise",
"//zircon/public/lib/async-cpp",
]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
fuchsia_package_with_single_component("virtio_net") {
manifest = "../meta/virtio_net.cmx"
deps = [ ":virtio_net_bin" ]
}
executable("virtio_rng_bin") {
visibility = [ ":*" ]
output_name = "virtio_rng"
sources = [ "virtio_rng.cc" ]
deps = [ ":virtio" ]
}
fuchsia_package_with_single_component("virtio_rng") {
manifest = "../meta/virtio_rng.cmx"
deps = [ ":virtio_rng_bin" ]
}
executable("virtio_wl_bin") {
visibility = [ ":*" ]
output_name = "virtio_wl"
sources = [
"../bits.h",
"virtio_wl.cc",
"virtio_wl.h",
]
deps = [
":virtio",
"//sdk/fidl/fuchsia.scenic.allocation",
"//sdk/fidl/fuchsia.sysmem",
"//zircon/system/ulib/fbl",
]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
fuchsia_package_with_single_component("virtio_wl") {
manifest = "../meta/virtio_wl.cmx"
deps = [ ":virtio_wl_bin" ]
}
executable("device_tests") {
visibility = [ "//src/virtualization/bin/vmm:*" ]
testonly = true
sources = [
"magma_image_test.cc",
"test_with_device.cc",
"test_with_device.h",
"virtio_balloon_test.cc",
"virtio_block_test.cc",
"virtio_console_test.cc",
"virtio_gpu_test.cc",
"virtio_input_test.cc",
"virtio_magma_test.cc",
"virtio_net_test.cc",
"virtio_queue_fake.cc",
"virtio_queue_fake.h",
"virtio_queue_test.cc",
"virtio_rng_test.cc",
"virtio_wl_unittest.cc",
]
deps = [
":device",
":magma_image",
"//sdk/fidl/fuchsia.netstack",
"//sdk/fidl/fuchsia.ui.scenic",
"//sdk/fidl/fuchsia.virtualization.hardware",
"//sdk/lib/sys/cpp/testing:integration",
"//src/graphics/lib/magma/include:magma_abi",
"//src/graphics/lib/magma/include/virtio:headers",
"//src/lib/fxl/test:gtest_main",
"//third_party/mesa/include:drm-uapi",
"//zircon/system/ulib/fzl",
"//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
"//zircon/system/ulib/virtio",
]
configs += [ "//build/config:all_source" ]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
source_set("qcow_test_data") {
visibility = [ "//src/virtualization/*" ]
sources = [ "qcow_test_data.h" ]
public_deps = [ ":block" ]
}
executable("device_unittests") {
visibility = [ "//src/virtualization/bin/vmm:*" ]
testonly = true
sources = [
"qcow_unittest.cc",
"volatile_write_block_dispatcher_unittest.cc",
]
deps = [
":qcow_test_data",
"//sdk/lib/syslog/cpp",
"//src/lib/fxl/test:gtest_main",
"//zircon/public/lib/fbl",
]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
action("virtio_magma_generic") {
out_file = "$target_gen_dir/virtio_magma_generic.h"
script = "virtio_magma_generic_h_gen.py"
args = [
rebase_path("//src/graphics/lib/magma/include/magma_abi/magma.json",
root_build_dir),
rebase_path(out_file, root_build_dir),
]
sources = [ "$script" ]
inputs = [ "//src/graphics/lib/magma/include/magma_abi/magma.json" ]
outputs = [ "$out_file" ]
}