# 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 # Features used by //base/trace_event and //services/tracing. declare_args() { # Tracing support requires //third_party/perfetto, which is not available in # libchrome (CrOS's version of //base). This flag can disable tracing support # altogether, in which case all tracing instrumentation in //base becomes a # no-op. # TODO(crbug/1065905): Add dependency on perfetto to support typed events. enable_base_tracing = true # Switches the TRACE_EVENT instrumentation from base's TraceLog implementation # to //third_party/perfetto's client library. Not implemented yet, currently a # no-op to set up trybot infrastructure. # TODO(crbug/1006769): Switch to perfetto's client library. 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 # Allows googletest to pretty-print various absl types. Disabled for nacl due # to lack of toolchain support. gtest_enable_absl_printers = !is_nacl } # Allows different projects to specify their own suppression/ignore lists for # sanitizer tools. # asan_suppressions_file = "path/to/asan_suppressions.cc" # asan_win_ignorelist_path = "path/to/asan/blocklist_win.txt" # lsan_suppressions_file = "path/to/lsan_suppressions.cc" # tsan_suppressions_file = "path/to/tsan_suppressions.cc" # tsan_ignorelist_path = "path/to/tsan/ignores.txt" # msan_ignorelist_path = "path/to/msan/ignorelist.txt" # ubsan_ignorelist_path = "path/to/ubsan/ignorelist.txt" # ubsan_vptr_ignorelist_path = "path/to/ubsan/vptr_ignorelist.txt" # ubsan_security_ignorelist_path = "path/to/ubsan/security_ignorelist.txt" # cfi_ignorelist_path = "path/to/cfi/ignores.txt" 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 } if (host_os == "mac" || is_apple) { # Needed for is_apple when targeting macOS or iOS, independent of host. # Needed for host_os=="mac" for running host tool such as gperf in blink # even when targeting e.g. Windows. # TODO(thakis): See TODO in scripts.gni -- this should really only be needed # if is_apple, independent of host_os. declare_args() { # 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 for target_os mac only]. use_system_xcode = "" } if (use_system_xcode == "") { _result = exec_script("//build/mac/should_use_hermetic_xcode.py", [ current_os ], "value") assert(_result != 2, "Do not allow building targets with the default" + "hermetic toolchain if the minimum OS version is not met.") assert(_result != 3, "iOS does not support building with a hermetic toolchain. " + "Please install Xcode.") use_system_xcode = _result != 1 } assert(current_os != "ios" || use_system_xcode) assert(host_os == "mac" || !use_system_xcode) }