blob: 1039fe8a0291795c517f4886f4ec4f77dc5f8e8a [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/package.gni")
import("//build/test/test_package.gni")
import("//src/virtualization/buildtools/linux_paths.gni")
import("//src/virtualization/buildtools/romfs_image.gni")
extras_image = "$target_out_dir/linux/extras.img"
declare_args() {
# Default values for the guest network configuration.
#
# These are currently hard-coded to match what is setup in the virtio-net
# device.
#
# See //src/virtualization/bin/vmm/device/virtio_net.cc for more details.
linux_runner_ip = "10.0.0.2"
linux_runner_gateway = "10.0.0.1"
linux_runner_netmask = "255.255.255.0"
# If `true`, adds additional testonly content to extras.img, which will be
# built and mounted inside the container at /mnt/chromeos.
linux_runner_extras_tests = false
# If `true`, all block devices that would normally load as READ_WRITE will
# be loaded as VOLATILE_WRITE. This is useful when working on changes to
# the linux kernel as crashes and panics can sometimes corrupt the images.
linux_runner_volatile_block = false
# Point this to the location of external files to be included as extras
linux_runner_user_extras = []
}
config("linux_runner_net_config") {
defines = [
"LINUX_RUNNER_IP_DEFAULT=\"" + linux_runner_ip + "\"",
"LINUX_RUNNER_GATEWAY_DEFAULT=\"" + linux_runner_gateway + "\"",
"LINUX_RUNNER_NETMASK_DEFAULT=\"" + linux_runner_netmask + "\"",
]
}
source_set("lib") {
sources = [
"crash_listener.h",
"guest.cc",
"guest.h",
"linux_component.cc",
"linux_component.h",
"linux_runner.cc",
"linux_runner.h",
"log_collector.cc",
"log_collector.h",
"ports.h",
]
public_configs = [ ":linux_runner_net_config" ]
public_deps = [
"//sdk/fidl/fuchsia.sys",
"//sdk/fidl/fuchsia.ui.app",
"//sdk/fidl/fuchsia.virtualization",
"//sdk/fidl/fuchsia.wayland",
"//sdk/lib/fit-promise",
"//sdk/lib/sys/cpp",
"//sdk/lib/virtualization",
"//src/lib/fsl",
"//src/lib/fxl",
"//src/lib/storage/vfs/cpp",
"//src/virtualization/lib/grpc",
"//src/virtualization/lib/guest_config",
"//src/virtualization/packages/biscotti_guest/third_party/protos:vm_cc_proto",
"//third_party/grpc:grpc++",
"//third_party/protobuf:protobuf_lite",
"//zircon/public/lib/async-cpp",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/async-loop:async-loop-default",
"//zircon/system/ulib/fzl",
"//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
]
if (linux_runner_volatile_block) {
defines = [ "USE_VOLATILE_BLOCK" ]
}
}
icd_filename = "libvulkan_intel.so"
icd_manifest = "${target_gen_dir}/magma.json"
action("icd_manifest") {
visibility = [ ":*" ]
script = "//src/graphics/lib/magma/scripts/gen_icd_manifest.sh"
args = [
"${icd_filename}",
rebase_path(icd_manifest, root_build_dir),
]
outputs = [ icd_manifest ]
}
romfs_image("extras") {
deps = [
":icd_manifest",
"//src/lib/vulkan:vulkan_headers_and_loader(${linux_lib_toolchain})",
]
inputs = [
"${icd_manifest}",
"${linux_lib_path}/libvulkan.so", # Vulkan Loader
]
if (linux_runner_extras_tests) {
testonly = true
deps += [
"//src/graphics/examples:vkcube-on-wayland(${linux_exe_toolchain})",
"//src/graphics/lib/magma/tests/integration:virtmagma_abi_conformance_tests(${linux_exe_toolchain})",
"//src/graphics/lib/magma/tests_linux/unit_tests:virtmagma_image_tests(${linux_exe_toolchain})",
"//src/graphics/lib/magma/tests_linux/unit_tests:virtmagma_unit_tests_linux(${linux_exe_toolchain})",
"//src/graphics/lib/magma/tests_linux/unit_tests:virtmagma_vulkan_unit_tests(${linux_exe_toolchain})",
"//src/lib/vulkan:vulkaninfo(${linux_exe_toolchain})",
]
inputs += [
"${linux_exe_path}/virtmagma_unit_tests_linux",
"${linux_exe_path}/virtmagma_vulkan_unit_tests",
"${linux_exe_path}/virtmagma_abi_conformance_tests",
"${linux_exe_path}/cube-wayland",
"${linux_exe_path}/vulkaninfo",
"${linux_exe_path}/virtmagma_image_tests",
]
inputs += linux_runner_user_extras
}
if (current_cpu == "x64") {
deps += [ "//third_party/mesa/src/intel/vulkan:vulkan_intel(${linux_lib_toolchain})" ]
inputs += [ "${linux_lib_path}/${icd_filename}" ]
}
output = extras_image
}
executable("bin") {
output_name = "linux_runner"
sources = [ "main.cc" ]
deps = [ ":lib" ]
}
package("linux_runner") {
if (linux_runner_extras_tests) {
testonly = true
}
deps = [
":bin",
":extras",
]
binaries = [
{
name = "linux_runner"
},
]
meta = [
{
path = rebase_path("meta/linux_runner.cmx")
dest = "linux_runner.cmx"
},
]
resources = [
{
path = extras_image
dest = "extras.img"
},
]
}
executable("linux_runner_unittests") {
visibility = [ ":*" ]
testonly = true
sources = [ "guest_unittest.cc" ]
deps = [
":lib",
"//garnet/public/lib/gtest",
"//sdk/lib/sys/cpp/testing:unit",
"//sdk/lib/virtualization/testing",
"//src/lib/fxl/test:gtest_main",
"//src/storage/memfs",
]
}
test_package("linux_runner_tests") {
deps = [ ":linux_runner_unittests" ]
tests = [
{
name = "linux_runner_unittests"
environments = basic_envs
disabled = true
},
]
}