# 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

# Enables assertions on safety checks in libc++.
enable_safe_libcxx = 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_cxx17 = !is_android

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