# 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
}

if (angle_build_capture_replay_tests) {
  assert(angle_with_capture_by_default, "Must build with capture by default.")

  _test_names_file = "test_names_${angle_capture_replay_composite_file_id}.json"

  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_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_REPLAY_EXPORT=",
  ]
  include_dirs = [ "." ]

  if (angle_build_capture_replay_tests) {
    deps += [ ":angle_capture_replay_libs" ]
  }
}
