blob: 3f815c89d3a45bbd5b37358ead52c757bd56a17a [file] [log] [blame]
# Copyright 2019 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("../gn/build_rules.gni")
#
# Common targets that only depend on Vulkan and the Vulkan API.
#
source_set("common") {
sources = [
"common/demo_app_base.cc",
"common/demo_app_base.h",
"common/demo_image.h",
"common/demo_image_group.h",
"common/demo_utils.cc",
"common/demo_utils.h",
"common/vulkan_device.cc",
"common/vulkan_device.h",
"common/vulkan_window.cc",
"common/vulkan_window.h",
]
public_deps = [
"${graphics_compute_dir}/tests:common_vk",
"${graphics_compute_dir}/tests/common/spinel:spinel_utils",
]
}
graphics_compute_unittests("common_vk_unittests") {
sources = [ "common/demo_vulkan_app_unittest.cc" ]
deps = [ ":common" ]
}
#
# Common source files for demos that use Spinel.
#
source_set("common_spinel") {
sources = [
"common/demo_app_spinel.cc",
"common/demo_app_spinel.h",
"common/vulkan_device_spinel.cc",
]
public_deps = [
":common",
"${graphics_compute_dir}/spinel:spinel_vk_for_tests",
"${graphics_compute_dir}/tests/common/spinel_vk:spinel_vk_utils",
]
}
#
# A template used to define a set of demo programs that use Spinel
# as backends for the Spinel API.
#
# Accepts all variables from graphics_compute_executable() plus:
#
# spinel_backend: A required string that must be "spinel"
#
template("graphics_compute_spinel_demo_executable") {
assert(defined(invoker.spinel_backend), "spinel_backend must be defined!")
graphics_compute_executable(target_name) {
forward_variables_from(invoker, "*", [ "spinel_backend" ])
if (!defined(defines)) {
defines = []
}
defines += [ "PROGRAM_NAME=\"${target_name}\"" ]
if (!defined(deps)) {
deps = []
}
if (invoker.spinel_backend == "spinel") {
deps += [
":common",
":common_spinel",
]
} else {
assert(false, "Invalid spinel_backend value: ${invoker.spinel_backend}")
}
needs_vulkan = true
}
}
# Defines several executable targets for a Spinel API demo.
#
# Each one with a spinel_${target_name} or mold_${target_name} prefix.
# This makes it easy to share common demo code between several backends.
#
template("graphics_compute_spinel_demo") {
graphics_compute_spinel_demo_executable("spinel-${target_name}") {
forward_variables_from(invoker, "*", [ "target_name" ])
spinel_backend = "spinel"
}
group(target_name) {
deps = [ ":spinel-${target_name}" ]
}
}
#
# Demo programs that display an input SVG file
#
graphics_compute_spinel_demo("svg-demo") {
sources = [ "main_svg_demo.cc" ]
deps = [ "${graphics_compute_dir}/tests/common/svg" ]
}
#
# Demo programs that display an input SVG file in a ring.
#
source_set("svg_scene_demo_image") {
sources = [
"svg_scene_demo_image.cc",
"svg_scene_demo_image.h",
]
deps = [
":common",
"${graphics_compute_dir}/spinel/ext/color",
"${graphics_compute_dir}/spinel/ext/transform_stack",
"${graphics_compute_dir}/tests/common/svg",
]
}
graphics_compute_spinel_demo("ring-demo") {
sources = [ "main_svg_ring_demo.cc" ]
deps = [
":svg_scene_demo_image",
"${graphics_compute_dir}/tests/common/svg",
]
}
#
# All examples in this group.
#
group("examples") {
deps = [
":ring-demo",
":svg-demo",
]
}