Hash :
391bfa35
Author :
Date :
2023-07-27T16:43:09
Fix a missing symbol issue with CaptureReplayTests The constructor for PlatformMethods is declared with __declspec(dllimport) when included in CaptureReplayTests.cpp, Ordinarily, this would fail to link on Windows because this test doesn't link against a library that has an exported definition. This test currently builds on Windows because Clang generates an available_externally definition in the object file for CaptureReplayTests.cpp for inlining. However, this doesn't build if inlining is disabled, and will no longer build once an upcoming Clang change is rolled in. To fix this, we add the config libANGLE_config to the test to change the symbol declaration to __declspec(dllexport), which appears to be what other ANGLE tests do. Bug: chromium:1468150 Change-Id: Ia92dde31ab624bbfe64d2e81fad18956abebc41b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4728461 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
# Copyright 2020 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("../../../gni/angle.gni")
import("../angle_traces.gni")
declare_args() {
# Determines if we build the capture_replay_tests. Off by default.
angle_build_capture_replay_tests = false
# Set the trace directory. Default is traces
angle_capture_replay_test_trace_dir = "traces"
angle_capture_replay_composite_file_id = 1
}
_test_names_file = "test_names_${angle_capture_replay_composite_file_id}.json"
if (angle_build_capture_replay_tests) {
assert(angle_with_capture_by_default, "Must build with capture by default.")
angle_trace_libs("angle_capture_replay_libs") {
_tracedir = angle_capture_replay_test_trace_dir
trace_dir = _tracedir
json_path = "$_tracedir/$_test_names_file"
_trace_json = read_file(json_path, "json")
trace_list = _trace_json.traces
short_names = true
}
}
angle_executable("capture_replay_tests") {
testonly = true
sources = [ "CaptureReplayTests.cpp" ]
deps = [
"$angle_root:angle_compression",
"$angle_root/util:angle_frame_capture_test_utils",
"$angle_root/util:angle_trace_loader",
"$angle_root/util:angle_util",
]
data_deps = [
"$angle_root:libEGL",
"$angle_root:libGLESv2",
]
configs += [
"$angle_root:library_name_config",
"${angle_root}:libANGLE_config",
]
defines = []
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" ]
}
# Disable optimization to avoid optimizing huge files.
_trace_folder_relative_path = "./" + angle_capture_replay_test_trace_dir
_data_path = rebase_path(_trace_folder_relative_path, root_out_dir)
defines = [
"ANGLE_CAPTURE_REPLAY_TEST_DATA_DIR=\"${_data_path}\"",
"ANGLE_CAPTURE_REPLAY_TEST_NAMES_PATH=\"${_data_path}/${_test_names_file}\"",
"ANGLE_REPLAY_EXPORT=",
]
include_dirs = [ "." ]
if (angle_build_capture_replay_tests) {
deps += [ ":angle_capture_replay_libs" ]
}
}