зеркало из https://github.com/AvaloniaUI/angle.git
666 строки
21 KiB
Plaintext
666 строки
21 KiB
Plaintext
# Copyright 2019 The ANGLE Project 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_overrides/angle.gni")
|
|
|
|
declare_args() {
|
|
is_ggp = false
|
|
|
|
# Extract native libs in ANGLE apk. Useful for flamegraph generation.
|
|
angle_extract_native_libs = false
|
|
|
|
# Display mode for ANGLE vulkan display, could be 'simple' or 'headless', default is 'simple'.
|
|
angle_vulkan_display_mode = "simple"
|
|
|
|
# Defaults to capture building to $root_out_dir/angle_libs/with_capture.
|
|
# Switch on to build capture to $root_out_dir.
|
|
angle_with_capture_by_default = false
|
|
|
|
# Enables OpenCL support, off by default.
|
|
angle_enable_cl = false
|
|
|
|
angle_restricted_traces = []
|
|
|
|
# Don't build dEQP by default.
|
|
build_angle_deqp_tests = false
|
|
|
|
# Enable Desktop GL frontend support.
|
|
angle_enable_gl_desktop_frontend = false
|
|
}
|
|
|
|
declare_args() {
|
|
# Expose WGL entry points, which is necessary for running windows desktop GL applications against ANGLE.
|
|
# TODO(http://anglebug.com/7628): This condition should be `angle_enable_gl_desktop_frontend && is_win`
|
|
# This is disabled by default on Windows because it was causing some test failures. Once the WGL frontend
|
|
# has more functionality implemented, we can re-enable this.
|
|
angle_expose_wgl_entry_points = false
|
|
|
|
# Expose GLX entry points by default when using Desktop GL on Linux.
|
|
angle_expose_glx_entry_points = angle_enable_gl_desktop_frontend && is_linux
|
|
}
|
|
|
|
if (angle_has_build) {
|
|
import("//build/config/dcheck_always_on.gni")
|
|
import("//build/config/ozone.gni") # import the ozone_platform_x11 variable
|
|
import("//build/config/sanitizers/sanitizers.gni")
|
|
import("//build_overrides/build.gni")
|
|
import("//testing/test.gni")
|
|
if (is_android) {
|
|
import("//build/config/android/config.gni")
|
|
}
|
|
|
|
if (is_win) {
|
|
import("//build/config/win/visual_studio_version.gni")
|
|
}
|
|
|
|
if (is_castos || ozone_platform_headless) {
|
|
angle_vulkan_display_mode = "headless"
|
|
}
|
|
|
|
declare_args() {
|
|
angle_use_gbm = ozone_platform_gbm
|
|
angle_use_x11 =
|
|
ozone_platform_x11 && !is_ggp && (is_linux || is_chromeos) && !is_castos
|
|
angle_use_wayland =
|
|
ozone_platform_wayland && !is_ggp && is_linux && !is_castos
|
|
angle_use_vulkan_display = (is_linux || is_chromeos) && !is_ggp
|
|
}
|
|
} else {
|
|
declare_args() {
|
|
is_ubsan = false
|
|
is_tsan = false
|
|
is_asan = false
|
|
is_lsan = false
|
|
build_with_chromium = false
|
|
dcheck_always_on = false
|
|
angle_use_x11 = (is_linux || is_chromeos) && !is_ggp
|
|
angle_use_wayland = is_linux && !is_ggp
|
|
use_ozone = false
|
|
ozone_platform_gbm = false
|
|
ozone_platform_wayland = false
|
|
ozone_platform_headless = false
|
|
use_fuzzing_engine = false
|
|
is_apple = is_mac || is_ios
|
|
}
|
|
|
|
declare_args() {
|
|
angle_use_vulkan_display = (is_linux || is_chromeos) && !is_ggp
|
|
}
|
|
}
|
|
|
|
# Subdirectory to place data files (e.g. layer JSON files).
|
|
angle_data_dir = "angledata"
|
|
|
|
declare_args() {
|
|
angle_assert_always_on = dcheck_always_on
|
|
|
|
if (current_cpu == "arm64" || current_cpu == "x64" ||
|
|
current_cpu == "mips64el" || current_cpu == "s390x" ||
|
|
current_cpu == "ppc64" || current_cpu == "loong64") {
|
|
angle_64bit_current_cpu = true
|
|
} else if (current_cpu == "arm" || current_cpu == "x86" ||
|
|
current_cpu == "mipsel" || current_cpu == "s390" ||
|
|
current_cpu == "ppc" || current_cpu == "loong32") {
|
|
angle_64bit_current_cpu = false
|
|
} else {
|
|
assert(false, "Unknown current CPU: $current_cpu")
|
|
}
|
|
|
|
# Indicate if the rapidJSON library is available to build with in third_party/.
|
|
angle_has_rapidjson = angle_has_build
|
|
}
|
|
|
|
declare_args() {
|
|
# By default we enable debug layers when asserts are turned on.
|
|
angle_debug_layers_enabled = is_debug || angle_assert_always_on
|
|
|
|
if (!is_android) {
|
|
ndk_api_level_at_least_26 = false
|
|
} else {
|
|
ndk_api_level_at_least_26 =
|
|
(!angle_64bit_current_cpu && android32_ndk_api_level >= 26) ||
|
|
(angle_64bit_current_cpu && android64_ndk_api_level >= 26)
|
|
}
|
|
|
|
# Vulkan loader is statically linked on Mac. http://anglebug.com/4477
|
|
angle_shared_libvulkan = !is_mac
|
|
|
|
# There's no "is_winuwp" helper in BUILDCONFIG.gn, so we define one ourselves
|
|
angle_is_winuwp = is_win && target_os == "winuwp"
|
|
|
|
# Default to using "_angle" suffix on Android
|
|
if (is_android) {
|
|
angle_libs_suffix = "_angle"
|
|
} else {
|
|
angle_libs_suffix = ""
|
|
}
|
|
|
|
# Currently Windows on Arm doesn't support OpenGL or Vulkan.
|
|
is_win_arm64 = is_win && target_cpu == "arm64"
|
|
|
|
# Frame capture code is enabled by default if rapidjson is available.
|
|
angle_has_frame_capture = angle_has_rapidjson
|
|
|
|
# By default, include the SPIR-V based MSL translator (in addition to the direct translator)
|
|
angle_enable_msl_through_spirv = is_mac
|
|
}
|
|
|
|
declare_args() {
|
|
# By default, ANGLE is using a thread pool for parallel compilation.
|
|
# Activating the delegate worker results in posting the tasks using the
|
|
# embedder API. In Chromium code base, it results in sending tasks to the
|
|
# worker thread pool.
|
|
angle_delegate_workers = build_with_chromium
|
|
|
|
# True if we are building inside an ANGLE checkout.
|
|
angle_standalone = !build_with_chromium
|
|
|
|
angle_enable_d3d9 = is_win && !angle_is_winuwp
|
|
angle_enable_d3d11 = is_win
|
|
angle_enable_gl =
|
|
(ozone_platform_gbm || ozone_platform_wayland || !is_linux ||
|
|
((angle_use_x11 && !is_chromeos) || angle_use_wayland)) && !is_fuchsia &&
|
|
!angle_is_winuwp && !is_ggp && !is_win_arm64
|
|
|
|
angle_enable_vulkan =
|
|
angle_has_build &&
|
|
!(is_android && build_with_chromium && is_official_build) &&
|
|
((is_win && !angle_is_winuwp) ||
|
|
((is_linux || is_chromeos) &&
|
|
(angle_use_x11 || angle_use_wayland || angle_use_vulkan_display)) ||
|
|
is_android || is_fuchsia || is_ggp || angle_enable_msl_through_spirv)
|
|
|
|
# When set to true, ANGLE will not use VK_KHR_surface and VK_KHR_swapchain
|
|
# extensions. Content can be rendered only off-screen.
|
|
angle_use_vulkan_null_display = build_with_chromium && is_fuchsia
|
|
|
|
# Disable null backend to save space for official build.
|
|
angle_enable_null = !is_official_build
|
|
angle_enable_gl_desktop_backend = !is_android && !is_ios
|
|
|
|
# http://anglebug.com/2634
|
|
angle_enable_metal = is_mac
|
|
|
|
# Enables the OpenCL pass-through back end
|
|
angle_enable_cl_passthrough = angle_enable_cl
|
|
|
|
# Use glslang to generate SPIR-V
|
|
angle_use_spirv_gen_through_glslang = false
|
|
}
|
|
|
|
declare_args() {
|
|
# ASTC emulation is only built on standalone non-android builds
|
|
angle_has_astc_encoder = angle_has_build && angle_standalone && !is_android
|
|
}
|
|
|
|
declare_args() {
|
|
angle_test_enable_system_egl = false
|
|
}
|
|
|
|
# OpenCL is not supported on Windows UWP, because the CL headers include DX9, which is not
|
|
# supported by UWP. A workaround might be possible if CL support on UWP is required.
|
|
assert(!angle_is_winuwp || !angle_enable_cl,
|
|
"OpenCL is not supported on Windows UWP")
|
|
|
|
if (!angle_enable_cl) {
|
|
angle_enable_cl_passthrough = false
|
|
}
|
|
|
|
declare_args() {
|
|
# Currently SwiftShader's Vulkan front-end doesn't build on Android.
|
|
# Disabled by default on MSVC because of compiler warnings/errors.
|
|
angle_enable_swiftshader =
|
|
angle_enable_vulkan && !is_android && !is_ggp && is_clang
|
|
|
|
# Translator frontend support:
|
|
angle_enable_desktop_glsl = angle_enable_gl_desktop_frontend
|
|
|
|
# Translator backend support:
|
|
angle_enable_hlsl = angle_enable_d3d9 || angle_enable_d3d11
|
|
angle_enable_essl = angle_enable_gl || use_ozone
|
|
angle_enable_glsl = angle_enable_gl || use_ozone
|
|
angle_enable_trace = false
|
|
angle_enable_trace_android_logcat = false
|
|
angle_enable_trace_events = false
|
|
|
|
# Disable the layers in ubsan builds because of really slow builds.
|
|
# Vulkan Validation Layers require Android NDK API level 26, i.e. Oreo, due to
|
|
# Vulkan Validation Layers compatibility issues, see http://crrev/c/1405714.
|
|
angle_enable_vulkan_validation_layers =
|
|
angle_enable_vulkan && !is_ubsan && !is_tsan && !is_asan &&
|
|
angle_debug_layers_enabled && (!is_android || ndk_api_level_at_least_26)
|
|
|
|
# Support using glslang to generate SPIR-V for the time being for the purpose of debugging
|
|
# the SPIR-V generation path, but leave it disabled on release. It's still used by the metal
|
|
# backend nevertheless.
|
|
angle_enable_spirv_gen_through_glslang =
|
|
is_debug || angle_assert_always_on || angle_enable_msl_through_spirv ||
|
|
angle_use_spirv_gen_through_glslang
|
|
|
|
# ISpriteVisual windows cannot be validated and can lead to crashes if an invalid window is
|
|
# provided to ANGLE. Disable them for non-standalone ANGLE builds. crbug.com/1176118
|
|
angle_enable_d3d11_compositor_native_window =
|
|
angle_enable_d3d11 && angle_standalone
|
|
|
|
# Disable performance counter output by default
|
|
angle_enable_perf_counter_output = false
|
|
|
|
# We should use EAGL (ES) on iOS except on Mac Catalyst on Intel CPUs, which uses CGL (desktop GL).
|
|
angle_enable_eagl = angle_enable_gl && is_ios &&
|
|
!(target_environment == "catalyst" &&
|
|
(target_cpu == "x86" || target_cpu == "x64"))
|
|
|
|
# Directory where to find wayland source files
|
|
angle_wayland_dir = "$angle_root/third_party/wayland"
|
|
|
|
angle_vulkan_headers_dir =
|
|
"$angle_root/third_party/vulkan-deps/vulkan-headers/src"
|
|
angle_vulkan_loader_dir =
|
|
"$angle_root/third_party/vulkan-deps/vulkan-loader/src"
|
|
angle_vulkan_tools_dir =
|
|
"$angle_root/third_party/vulkan-deps/vulkan-tools/src"
|
|
angle_vulkan_validation_layers_dir =
|
|
"$angle_root/third_party/vulkan-deps/vulkan-validation-layers/src"
|
|
|
|
angle_build_vulkan_system_info = angle_has_build && !angle_is_winuwp
|
|
|
|
# Enable overlay by default when debug layers are enabled. This is currently only implemented on
|
|
# Vulkan.
|
|
angle_enable_overlay = angle_enable_vulkan && angle_debug_layers_enabled
|
|
}
|
|
|
|
declare_args() {
|
|
# TODO(jdarpinian): Support enabling CGL and EAGL at the same time using the soft linking code. Also support disabling both for Metal-only builds.
|
|
angle_enable_cgl = angle_enable_gl && !angle_enable_eagl && is_apple
|
|
|
|
angle_enable_apple_translator_workarounds =
|
|
is_apple &&
|
|
(angle_enable_glsl || angle_enable_metal || use_fuzzing_engine)
|
|
|
|
angle_has_histograms = angle_has_build
|
|
|
|
# True if we want to build the ANGLE test suites. On by default in most configs.
|
|
angle_build_tests = angle_has_build
|
|
}
|
|
|
|
declare_args() {
|
|
angle_enable_renderdoc = angle_enable_vulkan_validation_layers
|
|
}
|
|
|
|
if (!defined(angle_zlib_compression_utils_dir)) {
|
|
angle_zlib_compression_utils_dir = "//third_party/zlib/google"
|
|
}
|
|
|
|
angle_common_configs = [
|
|
angle_root + ":angle_asserts_config",
|
|
angle_root + ":constructor_and_destructor_warnings",
|
|
angle_root + ":extra_warnings",
|
|
angle_root + ":internal_config",
|
|
angle_root + ":angle_uwp_env",
|
|
]
|
|
|
|
angle_remove_configs = []
|
|
|
|
if (angle_has_build) {
|
|
angle_remove_configs += [ "//build/config/compiler:default_include_dirs" ]
|
|
}
|
|
|
|
if (angle_has_build && is_clang) {
|
|
angle_remove_configs += [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
|
|
set_defaults("angle_executable") {
|
|
configs = angle_common_configs
|
|
public_configs = []
|
|
suppressed_configs = angle_remove_configs
|
|
data_deps = []
|
|
}
|
|
|
|
set_defaults("angle_shared_library") {
|
|
configs = angle_common_configs
|
|
public_configs = []
|
|
suppressed_configs = angle_remove_configs
|
|
}
|
|
|
|
set_defaults("angle_source_set") {
|
|
configs = angle_common_configs
|
|
public_configs = []
|
|
suppressed_configs = angle_remove_configs
|
|
}
|
|
|
|
set_defaults("angle_static_library") {
|
|
configs = angle_common_configs
|
|
public_configs = []
|
|
suppressed_configs = angle_remove_configs
|
|
}
|
|
|
|
set_defaults("angle_test") {
|
|
# Gtest itself can't pass all the strict warning filters.
|
|
configs = angle_common_configs - [
|
|
"$angle_root:constructor_and_destructor_warnings",
|
|
"$angle_root:extra_warnings",
|
|
] + [ "$angle_root/src/tests:angle_maybe_has_histograms" ] +
|
|
[ "$angle_root/src/tests:angle_enable_renderdoc" ]
|
|
|
|
public_configs = []
|
|
public_deps = []
|
|
sources = []
|
|
data = []
|
|
defines = []
|
|
deps = []
|
|
data_deps = []
|
|
suppressed_configs = angle_remove_configs
|
|
}
|
|
|
|
template("angle_executable") {
|
|
executable(target_name) {
|
|
forward_variables_from(invoker,
|
|
"*",
|
|
[
|
|
"configs",
|
|
"suppressed_configs",
|
|
"visibility",
|
|
])
|
|
|
|
# Needed because visibility is global.
|
|
forward_variables_from(invoker, [ "visibility" ])
|
|
|
|
configs += invoker.configs
|
|
configs -= invoker.suppressed_configs
|
|
|
|
if (angle_has_build && is_win) {
|
|
data_deps += [ "//build/win:runtime_libs" ]
|
|
}
|
|
|
|
if (is_ios) {
|
|
check_includes = false
|
|
}
|
|
}
|
|
}
|
|
|
|
template("angle_shared_library") {
|
|
# On ios, define an ios_framework_bundle instead of a shared library.
|
|
# ios_framework_bundle doesn't automatically link, so we have to create
|
|
# a group that links and bundles the framework as well.
|
|
target_type = "shared_library"
|
|
internal_target_name = target_name
|
|
if (is_ios) {
|
|
target_type = "ios_framework_bundle"
|
|
internal_target_name = target_name + "_framework"
|
|
}
|
|
target(target_type, internal_target_name) {
|
|
forward_variables_from(invoker,
|
|
"*",
|
|
[
|
|
"configs",
|
|
"suppressed_configs",
|
|
"visibility",
|
|
])
|
|
|
|
# Needed because visibility is global.
|
|
forward_variables_from(invoker, [ "visibility" ])
|
|
|
|
configs += invoker.configs
|
|
configs -= invoker.suppressed_configs
|
|
|
|
public_configs += [ angle_root + ":shared_library_public_config" ]
|
|
|
|
if (is_android) {
|
|
configs += [ angle_root + ":build_id_config" ]
|
|
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
|
|
}
|
|
if (is_ios) {
|
|
info_plist = "$angle_root/util/ios/Info.plist"
|
|
|
|
# shared libraries are hidden inside ios_framework_bundle, but we include headers from them
|
|
# Specifically, libGLESv1_CM includes headers from libGLESv2
|
|
check_includes = false
|
|
}
|
|
}
|
|
if (is_ios) {
|
|
group(target_name) {
|
|
forward_variables_from(invoker,
|
|
[
|
|
"testonly",
|
|
"visibility",
|
|
])
|
|
public_deps = [
|
|
":${internal_target_name}+bundle",
|
|
":${internal_target_name}+link",
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
template("angle_source_set") {
|
|
source_set(target_name) {
|
|
forward_variables_from(invoker,
|
|
"*",
|
|
[
|
|
"configs",
|
|
"suppressed_configs",
|
|
"visibility",
|
|
])
|
|
|
|
# Needed because visibility is global.
|
|
forward_variables_from(invoker, [ "visibility" ])
|
|
|
|
configs += invoker.configs
|
|
configs -= invoker.suppressed_configs
|
|
}
|
|
}
|
|
|
|
template("angle_static_library") {
|
|
static_library(target_name) {
|
|
forward_variables_from(invoker,
|
|
"*",
|
|
[
|
|
"configs",
|
|
"suppressed_configs",
|
|
"visibility",
|
|
])
|
|
|
|
# Needed because visibility is global.
|
|
forward_variables_from(invoker, [ "visibility" ])
|
|
|
|
configs += invoker.configs
|
|
configs -= invoker.suppressed_configs
|
|
}
|
|
}
|
|
|
|
if (angle_standalone || build_with_chromium) {
|
|
template("angle_test") {
|
|
test(target_name) {
|
|
forward_variables_from(invoker,
|
|
"*",
|
|
[
|
|
"configs",
|
|
"data",
|
|
"public_deps",
|
|
])
|
|
|
|
configs += invoker.configs
|
|
configs -= invoker.suppressed_configs
|
|
|
|
if (is_ios) {
|
|
# shared libraries are hidden inside ios_framework_bundle, but we include headers from them
|
|
check_includes = false
|
|
}
|
|
|
|
public_deps = invoker.public_deps + [
|
|
"$angle_root:angle_common",
|
|
"$angle_root:includes",
|
|
"$angle_root/src/tests:angle_test_expectations",
|
|
"$angle_root/third_party/rapidjson:rapidjson",
|
|
"$angle_root/util:angle_test_utils",
|
|
"//testing/gmock",
|
|
"//testing/gtest",
|
|
"//third_party/googletest:gmock",
|
|
"//third_party/googletest:gtest",
|
|
]
|
|
|
|
data = invoker.data + [
|
|
"$angle_root/scripts/run_gtest_angle_test.py",
|
|
"$angle_root/src/tests/py_utils/android_helper.py",
|
|
"$angle_root/src/tests/py_utils/angle_path_util.py",
|
|
"$angle_root/src/tests/py_utils/angle_test_util.py",
|
|
"//testing/scripts/common.py",
|
|
"//testing/xvfb.py",
|
|
]
|
|
|
|
sources += [
|
|
"$angle_root/src/tests/test_utils/runner/HistogramWriter.h",
|
|
"$angle_root/src/tests/test_utils/runner/TestSuite.cpp",
|
|
"$angle_root/src/tests/test_utils/runner/TestSuite.h",
|
|
]
|
|
|
|
if (angle_has_histograms) {
|
|
sources +=
|
|
[ "$angle_root/src/tests/test_utils/runner/HistogramWriter.cpp" ]
|
|
deps += [
|
|
"//third_party/catapult/tracing/tracing:histogram",
|
|
"//third_party/catapult/tracing/tracing:reserved_infos",
|
|
]
|
|
}
|
|
|
|
if (is_mac) {
|
|
if (angle_enable_metal) {
|
|
# On macOS, compiling Metal shader sometimes takes very long time due to internal caching
|
|
# mechanism. This hooking library is a way to bypass this caching mechanism.
|
|
data_deps += [ "$angle_root/src/libANGLE/renderer/metal/file_hooking:metal_shader_cache_file_hooking" ]
|
|
}
|
|
if (angle_enable_cgl) {
|
|
configs += [ "$angle_root:supports_automatic_graphics_switching" ]
|
|
}
|
|
}
|
|
|
|
if ((is_linux && !is_chromeos) ||
|
|
(build_with_chromium && is_chromeos_lacros && !is_chromeos_device)) {
|
|
use_xvfb = true
|
|
}
|
|
|
|
if ((is_linux || is_chromeos) && !is_component_build) {
|
|
# Set rpath to find shared libs in a non-component build.
|
|
configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
|
|
}
|
|
|
|
if (is_android) {
|
|
public_configs += [ "$angle_root:build_id_config" ]
|
|
configs -= [ "//build/config/android:hide_all_but_jni" ]
|
|
use_default_launcher = false
|
|
generate_final_jni = false
|
|
android_manifest_template = "$angle_root/src/tests/test_utils/runner/android/java/AndroidManifest.xml.jinja2"
|
|
deps += [
|
|
"$angle_root/src/tests:native_test_java",
|
|
"$angle_root/src/tests:native_test_support_android",
|
|
]
|
|
}
|
|
if (is_ios) {
|
|
# We use a special main function on iOS to initialize UIKit before the normal main runs.
|
|
ldflags = [
|
|
"-e",
|
|
"_ios_main",
|
|
]
|
|
sources += [ "$angle_root/util/ios/ios_main.mm" ]
|
|
}
|
|
|
|
if (angle_has_build && is_win) {
|
|
data_deps += [ "//build/win:runtime_libs" ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
template("angle_trace") {
|
|
angle_shared_library(target_name) {
|
|
testonly = true
|
|
|
|
# Similar to capture replay sample, use the file index for sources
|
|
sources = invoker.sources
|
|
|
|
data = invoker.data
|
|
defines = [ "ANGLE_REPLAY_IMPLEMENTATION" ]
|
|
suppressed_configs += [ "$angle_root:constructor_and_destructor_warnings" ]
|
|
|
|
deps = [ "$angle_root:angle_trace_fixture" ]
|
|
|
|
if (is_android) {
|
|
libs = [ "log" ]
|
|
}
|
|
|
|
# Disable optimization in the trace perf tests to avoid optimizing huge files.
|
|
if (!is_debug && !is_ubsan) {
|
|
suppressed_configs += [
|
|
"//build/config/compiler:afdo",
|
|
"//build/config/compiler:afdo_optimize_size",
|
|
"//build/config/compiler:default_optimization",
|
|
"//build/config/compiler/pgo:default_pgo_flags",
|
|
]
|
|
configs += [ "//build/config/compiler:no_optimize" ]
|
|
}
|
|
|
|
include_dirs = [ "." ]
|
|
|
|
if (defined(invoker.output_name)) {
|
|
output_name = invoker.output_name
|
|
}
|
|
}
|
|
}
|
|
|
|
set_defaults("angle_trace_library") {
|
|
# Uses a short name to work around file path limits on Windows.
|
|
short_names = false
|
|
}
|
|
|
|
template("angle_trace_library") {
|
|
_trace_targets = []
|
|
|
|
if (invoker.short_names) {
|
|
_trace_counter = 1
|
|
}
|
|
|
|
foreach(_trace_and_version, invoker.trace_list) {
|
|
_trace_and_version_arr = []
|
|
_trace_and_version_arr = string_split(_trace_and_version)
|
|
_trace = _trace_and_version_arr[0]
|
|
if (defined(invoker.trace_dir)) {
|
|
_trace_dir = invoker.trace_dir
|
|
} else {
|
|
_trace_dir = _trace
|
|
}
|
|
_trace_json_path = "$_trace_dir/$_trace.json"
|
|
_trace_data = []
|
|
_trace_data = read_file(_trace_json_path, "json")
|
|
|
|
if (invoker.short_names) {
|
|
_target = "cr_trace_${_trace_counter}"
|
|
_trace_counter += 1
|
|
} else {
|
|
_target = "${target_name}_$_trace"
|
|
}
|
|
angle_trace(_target) {
|
|
sources = rebase_path(_trace_data.TraceFiles, ".", _trace_dir)
|
|
|
|
data = [
|
|
"$_trace_dir/$_trace.json",
|
|
"$_trace_dir/$_trace.angledata.gz",
|
|
]
|
|
|
|
if (invoker.short_names) {
|
|
output_name = _trace
|
|
}
|
|
}
|
|
|
|
_trace_targets += [ ":$_target" ]
|
|
}
|
|
|
|
angle_shared_library(target_name) {
|
|
testonly = true
|
|
data = [ invoker.json_path ]
|
|
data_deps = _trace_targets
|
|
deps = [ "$angle_root:angle_common" ]
|
|
public_deps = [ "$angle_root/util:angle_trace_loader" ]
|
|
}
|
|
}
|