# Copyright 2016 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.

import("//build/config/gclient_args.gni")

# Uncomment these to specify a different NDK location and version in
# non-Chromium builds.
# default_android_ndk_root = "//third_party/android_ndk"
# default_android_ndk_version = "r10e"

# Some non-Chromium builds don't support building java targets.
enable_java_templates = true

# Some non-Chromium builds don't use Chromium's third_party/binutils.
linux_use_bundled_binutils_override = true

# Allows different projects to specify their own suppressions and blacklist
# files for sanitizer tools.
# asan_suppressions_file = "path/to/asan_suppressions.cc"
# asan_blacklist_path = "path/to/asan/blacklist.txt"
# asan_win_blacklist_path = "path/to/asan/blacklist_win.txt"
# lsan_suppressions_file = "path/to/lsan_suppressions.cc"
# tsan_suppressions_file = "path/to/tsan_suppressions.cc"
# tsan_blacklist_path = "path/to/tsan/ignores.txt"
# msan_blacklist_path = "path/to/msan/blacklist.txt"
# ubsan_blacklist_path = "path/to/ubsan/blacklist.txt"
# ubsan_vptr_blacklist_path = "path/to/ubsan/vptr_blacklist.txt"
# ubsan_security_blacklist_path = "path/to/ubsan/security_blacklist.txt"
# cfi_blacklist_path = "path/to/cfi/blacklist.txt"

# Uncomment these to specify a different lint suppressions file for android
# lint_suppressions_file = path/to/your/suppressions/file/suppressions.xml

declare_args() {
  # Android 32-bit non-component, non-clang builds cannot have symbol_level=2
  # due to 4GiB file size limit, see https://crbug.com/648948.
  # Set this flag to true to skip the assertion.
  ignore_elf32_limitations = false

  # Use the system install of Xcode for tools like ibtool, libtool, etc.
  # This does not affect the compiler. When this variable is false, targets will
  # instead use a hermetic install of Xcode. [The hermetic install can be
  # obtained with gclient sync after setting the environment variable
  # FORCE_MAC_TOOLCHAIN].
  use_system_xcode = ""
}

if (host_os == "mac" && use_system_xcode == "") {
  _result = exec_script("//build/mac/should_use_hermetic_xcode.py",
                        [ target_os ],
                        "value")
  assert(_result != 2,
         "Do not allow building targets with the default" +
             "hermetic toolchain if the minimum OS version is not met.")
  use_system_xcode = _result == 0
}
