| # 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", |
| ] |
| } |