# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Targets in ths file are to take a V8 context snapshot on build time.
# Created V8 context snapshot is used in
# third_party/WebKit/Source/bindings/core/v8/V8ContextSnapshot.{cpp|h}.
# to speedup creating a V8 context and setting up around it.

import("//build/config/chromecast_build.gni")
import("//build/config/v8_target_cpu.gni")
import("//v8/gni/v8.gni")

declare_args() {
  # TODO(crbug.com/764576): Enable the feature on more environments.
  # Disable in win/cross builds since buliding Blink twice is slow.
  use_v8_context_snapshot =
      !is_chromeos && !is_android && !is_chromecast && !is_fuchsia &&
      !(host_os == "mac" && current_cpu == "x86") &&
      (v8_target_cpu == target_cpu || is_msan) && !(is_win && host_os != "win")
}

# We cannot use V8 context snapshot, if V8 doesn't use snapshot files.
if (use_v8_context_snapshot && !v8_use_external_startup_data) {
  use_v8_context_snapshot = false
}
