blob: cbac1e73b55ad475541fdda30aa14b3ed921eb0f [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.hardware.input:fuchsia.hardware.input-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.sysmem:fuchsia.sysmem-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.input2:fuchsia.ui.input2-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-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/ui/input-synthesis",
"//src/lib/zircon/rust:fuchsia-zircon",
"//src/lib/zircon/rust:fuchsia-zircon-sys",
"//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:png",
"//third_party/rust_crates:rand",
"//third_party/rust_crates:rusttype",
"//third_party/rust_crates:smallvec",
"//third_party/rust_crates:textwrap",
"//third_party/rust_crates:vk-sys",
"//zircon/system/fidl/fuchsia-mem:fuchsia-mem-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",
]
}
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:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:rusttype",
"//third_party/rust_crates:textwrap",
"//third_party/rust_crates:thiserror",
]
}
package("button-rs") {
deps = [ ":button_example" ]
binaries = [
{
name = "app"
source = "button_example"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "button-rs.cmx"
},
]
}
rustc_binary("clockface") {
version = "0.1.0"
edition = "2018"
source_root = "examples/clockface.rs"
deps = [
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//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:rusttype",
"//third_party/rust_crates:thiserror",
]
}
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
}
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/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//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",
]
}
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-unorm.comp.spv",
"motioncopy-srgb.comp.spv",
]
foreach(shader, shaders) {
resources += [
{
path = rebase_path("src/render/shaders/${shader}")
file_name = get_path_info(shader, "file")
dest = "shaders/${file_name}"
},
]
}
}
rustc_binary("ink") {
version = "0.1.0"
edition = "2018"
source_root = "examples/ink.rs"
deps = [
"//sdk/fidl/fuchsia.hardware.input:fuchsia.hardware.input-rustc",
"//sdk/fidl/fuchsia.input.report:fuchsia.input.report-rustc",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//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:euclid",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:itertools",
"//third_party/rust_crates:rand",
"//third_party/rust_crates:rusttype",
"//third_party/rust_crates:thiserror",
]
}
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
}
rustc_binary("shapes") {
version = "0.1.0"
edition = "2018"
source_root = "examples/shapes.rs"
deps = [
"//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input-rustc",
"//src/lib/fuchsia-async",
"//src/lib/trace/rust:trace",
"//src/lib/trace/rust:trace-provider",
"//src/lib/ui/carnelian",
"//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:thiserror",
]
}
package("shapes-rs") {
deps = [ ":shapes" ]
binaries = [
{
name = "app"
source = "shapes"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "shapes-rs.cmx"
},
]
public_deps = vulkan_validation_layers.public_deps
loadable_modules = vulkan_validation_layers.loadable_modules
resources = vulkan_validation_layers.resources
}
rustc_binary("spinning_square") {
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/trace/rust:trace",
"//src/lib/trace/rust:trace-provider",
"//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",
]
}
package("spinning-square-rs") {
deps = [ ":spinning_square" ]
binaries = [
{
name = "app"
source = "spinning_square"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "spinning-square-rs.cmx"
},
]
}
rustc_binary("gamma") {
version = "0.1.0"
edition = "2018"
source_root = "examples/gamma.rs"
deps = [
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/trace/rust:trace",
"//src/lib/trace/rust:trace-provider",
"//src/lib/ui/carnelian",
"//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:thiserror",
]
}
package("gamma-rs") {
deps = [ ":gamma" ]
binaries = [
{
name = "app"
source = "gamma"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "gamma-rs.cmx"
},
]
public_deps = vulkan_validation_layers.public_deps
loadable_modules = vulkan_validation_layers.loadable_modules
resources = vulkan_validation_layers.resources
}
rustc_binary("png") {
version = "0.1.0"
edition = "2018"
source_root = "examples/png.rs"
deps = [
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/trace/rust:trace",
"//src/lib/trace/rust:trace-provider",
"//src/lib/ui/carnelian",
"//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:png",
"//third_party/rust_crates:thiserror",
]
}
package("png-rs") {
deps = [ ":png" ]
binaries = [
{
name = "app"
source = "png"
},
]
meta = [
{
path = rebase_path("meta/example.cmx")
dest = "png-rs.cmx"
},
]
public_deps = vulkan_validation_layers.public_deps
loadable_modules = vulkan_validation_layers.loadable_modules
resources = vulkan_validation_layers.resources
images = [
"lenna.png",
"baboon.png",
]
foreach(image, images) {
resources += [
{
path = rebase_path("examples/images/${image}")
file_name = get_path_info(image, "file")
dest = "images/${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
}
test_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:gamma-rs",
"//src/lib/ui/carnelian:infinite-scroll-rs",
"//src/lib/ui/carnelian:ink-rs",
"//src/lib/ui/carnelian:png-rs",
"//src/lib/ui/carnelian:shapes-rs",
"//src/lib/ui/carnelian:spinning-square-rs",
]
}