blob: 1e3cc9faffb3a01ed566ad470f8b2fc7c2f899e2 [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.
# These rules are only used by the Fuchsia host build
# (i.e. generating host executables for testing with the Fuchsia build system).
import("build_settings.gni")
_is_fuchsia_tree = defined(is_fuchsia_tree) && is_fuchsia_tree
if (_is_fuchsia_tree) {
import("//build/testing/test_spec.gni")
}
# A target that provides the GTest main() function for the host.
graphics_compute_gtest_main_target = "//src/lib/fxl/test:gtest_main"
# A target providing access to Vulkan at compile time when added to deps.
# TODO(fxbug.dev/25488): Change this to a more recent upstream.
graphics_compute_vulkan_loader_target = "${graphics_compute_dir}/gn/host:vulkan"
# NOTE: These definitions are used by those in build_rules.gni.
# Accepts same variables as GN executable() rule, as well as:
# needs_vulkan: Optional flag. Set to true to add Vulkan dependencies.
template("graphics_compute_executable_rule") {
executable(target_name) {
forward_variables_from(invoker,
"*",
[
# Avoid clobbering default configs
"configs",
"needs_vulkan",
])
if (defined(invoker.configs)) {
configs += invoker.configs
}
if (defined(invoker.needs_vulkan) && invoker.needs_vulkan) {
if (!defined(deps)) {
deps = []
}
deps += [ graphics_compute_vulkan_loader_target ]
}
}
}
# Accepts same variables as GN executable() rule, as well as:
# needs_vulkan: Optional flag. Set to true to add Vulkan dependencies.
template("graphics_compute_test_rule") {
# Generate the executable
_binary_target = "bin_${target_name}"
graphics_compute_executable_rule(_binary_target) {
testonly = true
output_name = invoker.target_name
forward_variables_from(invoker, "*", [ "target_name" ])
}
_deps = [ ":${_binary_target}" ]
# For Fuchsia, ensure the test is visible for 'fx run-host-tests <test_name>'
if (_is_fuchsia_tree) {
_test_spec_target_name = "${target_name}__test_spec"
test_spec(_test_spec_target_name) {
target = ":${invoker.target_name}"
path = "${root_out_dir}/${invoker.target_name}"
}
_deps += [ ":${_test_spec_target_name}" ]
}
group(target_name) {
testonly = true
deps = _deps
}
}