# 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.
#
# This file is used when gn runs in this directory (or a lower directory
# and searching upward ends here).  See "gn help dotfile."
# As a result this file will only affect stand-alone ANGLE builds,
# not chromium builds.

import("//build/dotfile_settings.gni")
import("//dotfile_settings.gni")

# Location of the build configuration file.
buildconfig = "//build/config/BUILDCONFIG.gn"

# The python interpreter to use by default. On Windows, this will look
# for python3.exe and python3.bat.
script_executable = "python3"

# These are the targets to check headers for by default. The files in targets
# matching these patterns (see "gn help label_pattern" for format) will have
# their includes checked for proper dependencies when you run either
# "gn check" or "gn gen --check".
check_targets = [ "*" ]

# These are the list of GN files that run exec_script. This allowlist exists
# to force additional review for new uses of exec_script, which is strongly
# discouraged except for gypi_to_gn calls.
exec_script_whitelist = angle_dotfile_settings.exec_script_whitelist +
                        build_dotfile_settings.exec_script_whitelist +
                        [
                          "//build/config/sysroot.gni",
                          "//build/config/win/BUILD.gn",
                          "//build/config/win/visual_studio_version.gni",
                          "//build/gn_helpers.py",
                          "//build_overrides/build.gni",
                        ]

default_args = {
  clang_use_chrome_plugins = true
  build_angle_deqp_tests = true
  use_sysroot = true

  # Saves on importing extra dependencies and ANGLE doesn't use JS.
  enable_js_protobuf = false

  # Disable location tags in isolates.
  tests_have_location_tags = false

  # Use base level API level 29 support for AHardwareBuffer ANGLE tests.
  android32_ndk_api_level = 29
  android64_ndk_api_level = 29
}
