# Copyright (c) 2016 The WebRTC 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 in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

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

# Don't set this variable to true when building stadalone WebRTC, it is
# only needed to support both WebRTC standalone and Chromium builds.
build_with_chromium = false

# Use our own suppressions files.
asan_suppressions_file = "//build/sanitizers/asan_suppressions.cc"
lsan_suppressions_file = "//tools_webrtc/sanitizers/lsan_suppressions_webrtc.cc"
tsan_suppressions_file = "//tools_webrtc/sanitizers/tsan_suppressions_webrtc.cc"
msan_ignorelist_path =
    rebase_path("//tools_webrtc/msan/suppressions.txt", root_build_dir)
ubsan_ignorelist_path =
    rebase_path("//tools_webrtc/ubsan/suppressions.txt", root_build_dir)
ubsan_vptr_ignorelist_path =
    rebase_path("//tools_webrtc/ubsan/vptr_suppressions.txt", root_build_dir)

# For Chromium, Android 32-bit non-component, non-clang builds hit a 4GiB size
# limit, making them requiring symbol_level=2. WebRTC doesn't hit that problem
# so we just ignore that assert. See https://crbug.com/648948 for more info.
ignore_elf32_limitations = true

# Use bundled hermetic Xcode installation maintainted by Chromium,
# except for local iOS builds where it's unsupported.
# Allow for mac cross compile on linux machines.
if (host_os == "mac" || host_os == "linux") {
  _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
}

declare_args() {
  # WebRTC doesn't depend on //base from production code but only for testing
  # purposes. In any case, it doesn't depend on //third_party/perfetto which
  # is used for base tracing, so this feature is disabled.
  enable_base_tracing = false
  use_perfetto_client_library = false

  # Limits the defined //third_party/android_deps targets to only "buildCompile"
  # and "buildCompileNoDeps" targets. This is useful for third-party
  # repositories which do not use JUnit tests. For instance,
  # limit_android_deps == true removes "gn gen" requirement for
  # //third_party/robolectric .
  limit_android_deps = false

  # If true, it assumes that //third_party/abseil-cpp is an available
  # dependency for googletest.
  gtest_enable_absl_printers = true
}
