blob: f8e866067dfefb29035bee4f86324999c936dbd5 [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/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//build/rust/rustc_test.gni")
import("//build/test/test_package.gni")
import("//src/lib/vulkan/layers.gni")
rustc_library("carnelian") {
name = "carnelian"
with_unit_tests = true
version = "0.1.0"
edition = "2018"
deps = [
"//garnet/examples/fidl/services:echo-rustc",
"//sdk/fidl/fuchsia.fonts:fuchsia.fonts-rustc",
"//sdk/fidl/fuchsia.images:fuchsia.images-rustc",
"//sdk/fidl/fuchsia.input.report:fuchsia.input.report-rustc",
"//sdk/fidl/fuchsia.math:fuchsia.math-rustc",
"//sdk/fidl/fuchsia.ui.app:fuchsia.ui.app-rustc",
"//sdk/fidl/fuchsia.ui.gfx:fuchsia.ui.gfx-rustc",
"//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input-rustc",
"//sdk/fidl/fuchsia.ui.policy:fuchsia.ui.policy-rustc",
"//sdk/fidl/fuchsia.ui.scenic:fuchsia.ui.scenic-rustc",
"//sdk/fidl/fuchsia.ui.views:fuchsia.ui.views-rustc",
"//src/graphics/lib/compute/mold",
"//src/graphics/lib/compute/spinel-mold",
"//src/graphics/lib/compute/spinel-rs-sys",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/mapped-vmo",
"//src/lib/syslog/rust:syslog",
"//src/lib/trace/rust:trace",
"//src/lib/trace/rust:trace-provider",
"//src/lib/ui/fuchsia-framebuffer",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:argh",
"//third_party/rust_crates:async-trait",
"//third_party/rust_crates:chrono",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:itertools",
"//third_party/rust_crates:lazy_static",
"//third_party/rust_crates:lipsum",
"//third_party/rust_crates:rand",
"//third_party/rust_crates:rusttype",
"//third_party/rust_crates:textwrap",
"//third_party/rust_crates:vk-sys",
"//zircon/system/fidl/fuchsia-hardware-input:fuchsia-hardware-input-rustc",
"//zircon/system/fidl/fuchsia-mem:fuchsia-mem-rustc",
"//zircon/system/fidl/fuchsia-sysmem:fuchsia-sysmem-rustc",
]
non_rust_deps = [
"//src/graphics/lib/compute/common",
"//src/graphics/lib/compute/common/vk",
"//src/graphics/lib/compute/hotsort/platforms/vk",
"//src/graphics/lib/compute/spinel",
"//src/graphics/lib/compute/spinel/platforms/vk",
"//src/graphics/lib/compute/spinel/platforms/vk:vk_find_target",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/amd/gcn3:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/amd/gcn3/hotsort",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/intel/gen8:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/intel/gen8/hotsort",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/nvidia/sm50:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/nvidia/sm50/hotsort",
"//src/lib/vulkan",
]
}
rustc_binary("spinning_square_example") {
version = "0.1.0"
edition = "2018"
source_root = "examples/spinning_square.rs"
deps = [
"//garnet/examples/fidl/services:echo-rustc",
"//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input-rustc",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:thiserror",
]
}
rustc_binary("button_example") {
version = "0.1.0"
edition = "2018"
source_root = "examples/button.rs"
deps = [
"//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input-rustc",
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:thiserror",
]
}
rustc_binary("perf_test_01") {
version = "0.1.0"
edition = "2018"
source_root = "examples/perf_test_01.rs"
deps = [
"//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input-rustc",
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:rand",
"//third_party/rust_crates:thiserror",
]
}
rustc_binary("perf_test_02") {
version = "0.1.0"
edition = "2018"
source_root = "examples/perf_test_02.rs"
deps = [
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:thiserror",
]
}
rustc_binary("perf_test_03") {
version = "0.1.0"
edition = "2018"
source_root = "examples/perf_test_03.rs"
deps = [
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:chrono",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:thiserror",
]
}
rustc_binary("perf_test_04") {
version = "0.1.0"
edition = "2018"
source_root = "examples/perf_test_04.rs"
deps = [
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:thiserror",
]
}
rustc_binary("drawing") {
version = "0.1.0"
edition = "2018"
source_root = "examples/drawing.rs"
deps = [
"//sdk/fidl/fuchsia.images:fuchsia.images-rustc",
"//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input-rustc",
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-framebuffer",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:thiserror",
]
}
rustc_binary("drawing_mold") {
version = "0.1.0"
edition = "2018"
source_root = "examples/drawing_mold.rs"
deps = [
"//sdk/fidl/fuchsia.images:fuchsia.images-rustc",
"//src/graphics/lib/compute/mold",
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-framebuffer",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:rusttype",
"//third_party/rust_crates:thiserror",
]
}
rustc_binary("clockface") {
version = "0.1.0"
edition = "2018"
source_root = "examples/clockface.rs"
deps = [
"//src/graphics/lib/compute/mold",
"//src/graphics/lib/compute/spinel-mold",
"//src/graphics/lib/compute/spinel-rs-sys",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/mapped-vmo",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-framebuffer",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:argh",
"//third_party/rust_crates:chrono",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:rusttype",
"//third_party/rust_crates:thiserror",
"//third_party/rust_crates:vk-sys",
"//zircon/system/fidl/fuchsia-sysmem:fuchsia-sysmem-rustc",
]
non_rust_deps = [
"//src/graphics/lib/compute/common",
"//src/graphics/lib/compute/common/vk",
"//src/graphics/lib/compute/hotsort/platforms/vk",
"//src/graphics/lib/compute/spinel",
"//src/graphics/lib/compute/spinel/platforms/vk",
"//src/graphics/lib/compute/spinel/platforms/vk:vk_find_target",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/amd/gcn3:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/amd/gcn3/hotsort",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/intel/gen8:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/intel/gen8/hotsort",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/nvidia/sm50:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/nvidia/sm50/hotsort",
"//src/lib/vulkan",
]
}
rustc_binary("ink") {
version = "0.1.0"
edition = "2018"
source_root = "examples/ink.rs"
deps = [
"//sdk/fidl/fuchsia.input.report:fuchsia.input.report-rustc",
"//src/graphics/lib/compute/mold",
"//src/graphics/lib/compute/spinel-mold",
"//src/graphics/lib/compute/spinel-rs-sys",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/mapped-vmo",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-framebuffer",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:argh",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:rand",
"//third_party/rust_crates:rusttype",
"//third_party/rust_crates:thiserror",
"//third_party/rust_crates:vk-sys",
"//zircon/system/fidl/fuchsia-hardware-input:fuchsia-hardware-input-rustc",
"//zircon/system/fidl/fuchsia-sysmem:fuchsia-sysmem-rustc",
]
non_rust_deps = [
"//src/graphics/lib/compute/common",
"//src/graphics/lib/compute/common/vk",
"//src/graphics/lib/compute/hotsort/platforms/vk",
"//src/graphics/lib/compute/spinel",
"//src/graphics/lib/compute/spinel/platforms/vk",
"//src/graphics/lib/compute/spinel/platforms/vk:vk_find_target",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/amd/gcn3:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/amd/gcn3/hotsort",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/intel/gen8:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/intel/gen8/hotsort",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/nvidia/sm50:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/nvidia/sm50/hotsort",
"//src/graphics/lib/vulkan",
]
}
rustc_binary("infinite_scroll") {
version = "0.1.0"
edition = "2018"
source_root = "examples/infinite_scroll.rs"
deps = [
"//sdk/fidl/fuchsia.fonts:fuchsia.fonts-rustc",
"//sdk/fidl/fuchsia.input.report:fuchsia.input.report-rustc",
"//src/graphics/lib/compute/mold",
"//src/graphics/lib/compute/spinel-mold",
"//src/graphics/lib/compute/spinel-rs-sys",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/mapped-vmo",
"//src/lib/trace/rust:trace",
"//src/lib/trace/rust:trace-provider",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-framebuffer",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:argh",
"//third_party/rust_crates:chrono",
"//third_party/rust_crates:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:lazy_static",
"//third_party/rust_crates:lipsum",
"//third_party/rust_crates:rand",
"//third_party/rust_crates:rusttype",
"//third_party/rust_crates:textwrap",
"//third_party/rust_crates:thiserror",
"//third_party/rust_crates:vk-sys",
"//zircon/system/fidl/fuchsia-sysmem:fuchsia-sysmem-rustc",
]
non_rust_deps = [
"//src/graphics/lib/compute/common",
"//src/graphics/lib/compute/common/vk",
"//src/graphics/lib/compute/hotsort/platforms/vk",
"//src/graphics/lib/compute/spinel",
"//src/graphics/lib/compute/spinel/platforms/vk",
"//src/graphics/lib/compute/spinel/platforms/vk:vk_find_target",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/amd/gcn3:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/amd/gcn3/hotsort",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/intel/gen8:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/intel/gen8/hotsort",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/nvidia/sm50:generate",
"//src/graphics/lib/compute/spinel/platforms/vk/targets/vendors/nvidia/sm50/hotsort",
"//src/graphics/lib/vulkan",
]
}
package("spinning_square_rs") {
deps = [ ":spinning_square_example" ]
binaries = [
{
name = "app"
source = "spinning_square_example"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "spinning_square_rs.cmx"
},
]
}
package("button_rs") {
deps = [ ":button_example" ]
binaries = [
{
name = "app"
source = "button_example"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "button_rs.cmx"
},
]
}
package("perf_test_01_rs") {
deps = [ ":perf_test_01" ]
binaries = [
{
name = "app"
source = "perf_test_01"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "perf_test_01_rs.cmx"
},
]
}
package("perf_test_02_rs") {
deps = [ ":perf_test_02" ]
binaries = [
{
name = "app"
source = "perf_test_02"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "perf_test_02_rs.cmx"
},
]
}
package("perf_test_03_rs") {
deps = [ ":perf_test_03" ]
binaries = [
{
name = "app"
source = "perf_test_03"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "perf_test_03_rs.cmx"
},
]
}
package("perf_test_04_rs") {
deps = [ ":perf_test_04" ]
binaries = [
{
name = "app"
source = "perf_test_04"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "perf_test_04_rs.cmx"
},
]
}
package("drawing_rs") {
deps = [ ":drawing" ]
binaries = [
{
name = "app"
source = "drawing"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "drawing_rs.cmx"
},
]
}
package("drawing_mold_rs") {
deps = [ ":drawing_mold" ]
binaries = [
{
name = "app"
source = "drawing_mold"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "drawing_mold_rs.cmx"
},
]
}
package("clockface_rs") {
deps = [ ":clockface" ]
binaries = [
{
name = "app"
source = "clockface"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "clockface_rs.cmx"
},
]
public_deps = vulkan_validation_layers.public_deps
loadable_modules = vulkan_validation_layers.loadable_modules
resources = vulkan_validation_layers.resources
}
package("ink_rs") {
deps = [ ":ink" ]
binaries = [
{
name = "app"
source = "ink"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "ink_rs.cmx"
},
]
public_deps = vulkan_validation_layers.public_deps
loadable_modules = vulkan_validation_layers.loadable_modules
resources = vulkan_validation_layers.resources
}
package("infinite_scroll_rs") {
deps = [ ":infinite_scroll" ]
binaries = [
{
name = "app"
source = "infinite_scroll"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "infinite_scroll_rs.cmx"
},
]
public_deps = vulkan_validation_layers.public_deps
loadable_modules = vulkan_validation_layers.loadable_modules
resources = vulkan_validation_layers.resources
shaders = [
"copy.comp.spv",
"motioncopy.comp.spv",
]
foreach(shader, shaders) {
resources += [
{
path = rebase_path("examples/shaders/${shader}")
file_name = get_path_info(shader, "file")
dest = "shaders/${file_name}"
},
]
}
}
test_package("carnelian_render_tests") {
deps = [ ":carnelian_test" ]
tests = [
{
name = "carnelian_lib_test"
environments = basic_envs
},
]
public_deps = vulkan_validation_layers.public_deps
loadable_modules = vulkan_validation_layers.loadable_modules
resources = vulkan_validation_layers.resources
}
unittest_package("carnelian_tests") {
deps = [ ":carnelian_test" ]
tests = [
{
name = "carnelian_lib_test"
environments = basic_envs
},
]
}
rustc_binary("carnelian_integration_test_bin") {
name = "carnelian_integration_test"
edition = "2018"
source_root = "tests/carnelian_integration_test.rs"
deps = [
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-framebuffer",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:thiserror",
]
}
test_package("carnelian_integration_test") {
deps = [ ":carnelian_integration_test_bin" ]
tests = [
{
name = "carnelian_integration_test"
environments = [ nuc_env ]
},
]
}
rustc_binary("carnelian_fb_integration_test_bin") {
name = "carnelian_fb_integration_test"
edition = "2018"
source_root = "tests/carnelian_integration_test.rs"
deps = [
"//src/lib/fuchsia-async",
"//src/lib/ui/carnelian",
"//src/lib/ui/fuchsia-framebuffer",
"//src/lib/ui/fuchsia-scenic",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:thiserror",
]
}
test_package("carnelian_fb_integration_test") {
deps = [ ":carnelian_fb_integration_test_bin" ]
tests = [
{
name = "carnelian_fb_integration_test"
environments = [ nuc_env ]
},
]
}
group("examples") {
public_deps = [
"//src/lib/ui/carnelian:button_rs",
"//src/lib/ui/carnelian:clockface_rs",
"//src/lib/ui/carnelian:drawing_mold_rs",
"//src/lib/ui/carnelian:drawing_rs",
"//src/lib/ui/carnelian:infinite_scroll_rs",
"//src/lib/ui/carnelian:ink_rs",
"//src/lib/ui/carnelian:perf_test_01_rs",
"//src/lib/ui/carnelian:perf_test_02_rs",
"//src/lib/ui/carnelian:perf_test_03_rs",
"//src/lib/ui/carnelian:perf_test_04_rs",
"//src/lib/ui/carnelian:spinning_square_rs",
]
}