# This file is used by the GN meta build system to find the root of the source
# tree and to set startup options. For documentation on the values set in this
# file, run "gn help dotfile" at the command line.

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

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

# These arguments override the default values for items in a declare_args
# block. "gn args" in turn can override these.
#
# In general the value for a build arg in the declare_args block should be the
# default. In some cases, a DEPS-ed in project will want different defaults for
# being built as part of Chrome vs. being built standalone. In this case, the
# Chrome defaults should go here. There should be no overrides here for
# values declared in the main Chrome repository.
#
# Important note for defining defaults: This file is executed before the
# BUILDCONFIG.gn file. That file sets up the global variables like "is_ios".
# This means that the default_args can not depend on the platform,
# architecture, or other build parameters. If you really need that, the other
# repo should define a flag that toggles on a behavior that implements the
# additional logic required by Chrome to set the variables.
default_args = {
  # TODO(brettw) bug 684096: Chrome on iOS does not build v8, so "gn gen" prints
  # a warning that "Build argument has no effect". When adding a v8 variable, it
  # also needs to be defined to src/ios/BUILD.gn (respectively removed from both
  # location when it is removed).

  v8_extra_library_files = []
  v8_experimental_extra_library_files = []
  v8_enable_gdbjit = false
  v8_imminent_deprecation_warnings = false

  # TODO(jochen): Remove this. http://crbug.com/v8/5830,
  # http://crbug.com/728583.
  v8_check_microtasks_scopes_consistency = false

  # Don't include webrtc's builtin task queue implementation.
  rtc_link_task_queue_impl = false

  # Don't include the iLBC audio codec.
  # TODO(bugs.webrtc.org/8396): Once WebRTC gets rid of its internal
  # deps on codecs, we can remove this.
  rtc_include_ilbc = false

  # Changes some setup for the Crashpad build to set them to build against
  # Chromium's zlib, base, etc.
  crashpad_dependencies = "chromium"
}

# These are the targets to skip header checking by default. The files in targets
# matching these patterns (see "gn help label_pattern" for format) will not have
# their includes checked for proper dependencies when you run either
# "gn check" or "gn gen --check".
no_check_targets = [
  # //chrome/*, https://crbug.com/949535
  "//chrome/browser/devtools:*",  # 114 errors
  "//chrome/browser/media/router/discovery:*",  # 26 errors
  "//chrome/browser/media/router:*",  # 225 errors
  "//chrome/browser/paint_preview:*",  # 4 errors
  "//chrome/browser/profiling_host:*",  # 13 errors
  "//chrome/browser/resources/chromeos/zip_archiver/cpp:*",  # 2 errors
  "//chrome/browser/safe_browsing/android:*",  # 3 errors
  "//chrome/browser/safe_browsing:*",  # 85 errors
  "//chrome/browser/safety_check/android:*",  # 3 errors
  "//chrome/browser/storage_access_api:*",  # 2 errors
  "//chrome/browser/touch_to_fill/android:*",  # 8 errors
  "//chrome/browser/updates/announcement_notification:*",  # 15 errors
  "//chrome/browser/updates/internal:*",  # 8 errors
  "//chrome/browser/updates:*",  # 21 errors
  "//chrome/install_static:*",  # 4 errors
  "//chrome/notification_helper:*",  # 4 errors
  "//chrome/services/cups_proxy/public/cpp:*",  # 2 errors
  "//chrome/services/cups_proxy:*",  # 6 errors
  "//chrome/services/ipp_parser:*",  # 1 error
  "//chrome/services/removable_storage_writer:*",  # 1 error
  "//chrome/services/util_win:*",  # 1 error
  "//chrome/test/data/nacl:*",  # 350 errors
  "//chrome/test/media_router:*",  # 5 errors
  "//chrome/test:*",  # 2682 errors

  "//clank/third_party/gvr_shim:*",  # 1 error
  "//extensions/browser/api/alarms:*",  # 2 errors
  "//extensions/browser/api/app_current_window_internal:*",  # 3 errors
  "//extensions/browser/api/app_runtime:*",  # 3 errors
  "//extensions/browser/api/app_window:*",  # 5 errors
  "//extensions/browser/api/audio:*",  # 3 errors
  "//extensions/browser/api/automation_internal:*",  # 37 errors
  "//extensions/browser/api/bluetooth_low_energy:*",  # 22 errors
  "//extensions/browser/api/bluetooth_socket:*",  # 12 errors
  "//extensions/browser/api/cast_channel:*",  # 3 errors
  "//extensions/browser/api/cec_private:*",  # 4 errors
  "//extensions/browser/api/clipboard:*",  # 3 errors
  "//extensions/browser/api/declarative:*",  # 20 errors
  "//extensions/browser/api/declarative_content:*",  # 2 errors
  "//extensions/browser/api/declarative_net_request/filter_list_converter:*",  # 1
                                                                               # error
  "//extensions/browser/api/declarative_net_request:*",  # 18 errors
  "//extensions/browser/api/declarative_webrequest:*",  # 29 errors
  "//extensions/browser/api/diagnostics:*",  # 2 errors
  "//extensions/browser/api/display_source:*",  # 7 errors
  "//extensions/browser/api/dns:*",  # 3 errors
  "//extensions/browser/api/document_scan:*",  # 2 errors
  "//extensions/browser/api/feedback_private:*",  # 2 errors
  "//extensions/browser/api/file_handlers:*",  # 3 errors
  "//extensions/browser/api/file_system:*",  # 1 error
  "//extensions/browser/api/hid:*",  # 12 errors
  "//extensions/browser/api/idle:*",  # 4 errors
  "//extensions/browser/api/management:*",  # 19 errors
  "//extensions/browser/api/messaging:*",  # 1 error
  "//extensions/browser/api/metrics_private:*",  # 3 errors
  "//extensions/browser/api/mime_handler_private:*",  # 1 error
  "//extensions/browser/api/networking_private:*",  # 14 errors
  "//extensions/browser/api/power:*",  # 3 errors
  "//extensions/browser/api/printer_provider:*",  # 7 errors
  "//extensions/browser/api/printer_provider_internal:*",  # 3 errors
  "//extensions/browser/api/runtime:*",  # 6 errors
  "//extensions/browser/api/serial:*",  # 10 errors
  "//extensions/browser/api/socket:*",  # 11 errors
  "//extensions/browser/api/sockets_tcp:*",  # 6 errors
  "//extensions/browser/api/sockets_tcp_server:*",  # 8 errors
  "//extensions/browser/api/sockets_udp:*",  # 9 errors
  "//extensions/browser/api/storage:*",  # 9 errors
  "//extensions/browser/api/system_cpu:*",  # 1 error
  "//extensions/browser/api/system_display:*",  # 3 errors
  "//extensions/browser/api/system_info:*",  # 8 errors
  "//extensions/browser/api/system_memory:*",  # 1 error
  "//extensions/browser/api/system_network:*",  # 2 errors
  "//extensions/browser/api/system_power_source:*",  # 2 errors
  "//extensions/browser/api/system_storage:*",  # 6 errors
  "//extensions/browser/api/test:*",  # 1 error
  "//extensions/browser/api/usb:*",  # 12 errors
  "//extensions/browser/api/virtual_keyboard:*",  # 1 error
  "//extensions/browser/api/virtual_keyboard_private:*",  # 2 errors
  "//extensions/browser/api/vpn_provider:*",  # 13 errors
  "//extensions/browser/api/web_request:*",  # 37 errors
  "//extensions/browser/api/webcam_private:*",  # 8 errors
  "//extensions/browser/api:*",  # 7 errors
  "//extensions/browser/updater:*",  # 31 errors
  "//extensions/browser/value_store:*",  # 5 errors
  "//extensions/browser:*",  # 20 errors
  "//extensions:*",  # 75 errors
  "//headless:*",  # 167 errors
  "//jingle:*",  # 4 errors
  "//native_client/src/trusted/service_runtime:*",  # 2 errors
  "//ppapi/cpp/private:*",  # 1 error
  "//ppapi/host:*",  # 1 error
  "//ppapi/native_client/src/untrusted/pnacl_irt_shim:*",  # 197 errors
  "//ppapi/proxy:*",  # 31 errors
  "//ppapi/shared_impl:*",  # 3 errors
  "//ppapi/thunk:*",  # 1071 errors
  "//ppapi:*",  # 3 errors
  "//remoting/base/grpc_support:*",  # 14 errors
  "//remoting/base/grpc_test_support:*",  # 1 error
  "//remoting/base:*",  # 6 errors
  "//remoting/client/display:*",  # 55 errors
  "//remoting/client/jni:*",  # 8 errors
  "//remoting/codec:*",  # 32 errors
  "//remoting/host/chromeos:*",  # 10 errors
  "//remoting/host/file_transfer:*",  # 43 errors
  "//remoting/host/input_monitor:*",  # 3 errors
  "//remoting/host/installer/mac:*",  # 1 error
  "//remoting/host/it2me:*",  # 18 errors
  "//remoting/host/linux:*",  # 64 errors
  "//remoting/host/mac:*",  # 49 errors
  "//remoting/host/native_messaging:*",  # 3 errors
  "//remoting/host/security_key:*",  # 68 errors
  "//remoting/host/setup:*",  # 9 errors
  "//remoting/host/win:*",  # 43 errors
  "//remoting/host:*",  # 164 errors
  "//remoting/ios/app/settings:*",  # 6 errors
  "//remoting/ios/app:*",  # 9 errors
  "//remoting/ios/audio:*",  # 5 errors
  "//remoting/ios/domain:*",  # 2 errors
  "//remoting/ios/facade:*",  # 8 errors
  "//remoting/ios/persistence:*",  # 10 errors
  "//remoting/ios/session:*",  # 7 errors
  "//remoting/ios:*",  # 2 errors
  "//remoting/protocol:*",  # 142 errors
  "//remoting/signaling:*",  # 30 errors
  "//remoting/test:*",  # 20 errors
  "//remoting:*",  # 27 errors
  "//sandbox/linux:*",  # 13 errors
  "//sandbox/mac:*",  # 14 errors
  "//sandbox/win:*",  # 7 errors

  "//third_party/breakpad:*",  # 34 errors
  "//third_party/ced/*",
  "//third_party/crashpad/crashpad/client:*",  # 1 error
  "//third_party/crashpad/crashpad/compat:*",  # 2 errors
  "//third_party/crashpad/crashpad/snapshot:*",  # 1 error
  "//third_party/crashpad/crashpad/test:*",  # 2 errors
  "//third_party/crashpad/crashpad/util:*",  # 2 errors
  "//third_party/dav1d:*",  # 95 errors
  "//third_party/ffmpeg:*",  # 1 error
  "//third_party/icu/*",
  "//third_party/libvpx:*",  # 164 errors
  "//third_party/libwebp:*",  # 80 errors, https://crbug.com/800762
  "//third_party/openscreen/src/cast/common:*",  # 4 errors
  "//third_party/openscreen/src/cast/receiver:*",  # 1 error
  "//third_party/openscreen/src/cast/streaming:*",  # 66 errors
  "//third_party/openscreen/src/discovery:*",  # 36 errors
  "//third_party/openscreen/src/osp/impl/quic:*",  # 16 errors
  "//third_party/openscreen/src/osp/msgs:*",  # 5 errors
  "//third_party/openscreen/src/osp/public:*",  # 1 error
  "//third_party/openscreen/src/osp:*",  # 13 errors
  "//third_party/openscreen/src/util:*",  # 29 errors
  "//third_party/pdfium/samples:*",  # 1 error
  "//third_party/pdfium/third_party:*",  # 2 errors
  "//third_party/pdfium:*",  # 1 error

  # //v8/*, https://crbug.com/v8/7330
  "//v8/src/inspector:*",  # 20 errors
  "//v8/test/cctest:*",  # 26 errors
  "//v8/test/unittests:*",  # 11 errors
  "//v8/test/wasm-api-tests:*",  # 13 errors
  "//v8/third_party/inspector_protocol:*",  # 2 errors
  "//v8/tools/debug_helper:*",  # 9 errors
  "//v8/tools/v8windbg:*",  # 2 errors
  "//v8:*",  # 1871 errors
]

# These are the list of GN files that run exec_script. This whitelist exists
# to force additional review for new uses of exec_script, which is strongly
# discouraged.
#
# PLEASE READ
#
# You should almost never need to add new exec_script calls. exec_script is
# slow, especially on Windows, and can cause confusing effects. Although
# individually each call isn't slow or necessarily very confusing, at the scale
# of our repo things get out of hand quickly. By strongly pushing back on all
# additions, we keep the build fast and clean. If you think you need to add a
# new call, please consider:
#
# - Do not use a script to check for the existence of a file or directory to
#   enable a different mode. Instead, use GN build args to enable or disable
#   functionality and set options. An example is checking for a file in the
#   src-internal repo to see if the corresponding src-internal feature should
#   be enabled. There are several things that can go wrong with this:
#
#    - It's mysterious what causes some things to happen. Although in many cases
#      such behavior can be conveniently automatic, GN optimizes for explicit
#      and obvious behavior so people can more easily diagnose problems.
#
#    - The user can't enable a mode for one build and not another. With GN build
#      args, the user can choose the exact configuration of multiple builds
#      using one checkout. But implicitly basing flags on the state of the
#      checkout, this functionality is broken.
#
#    - It's easy to get stale files. If for example the user edits the gclient
#      to stop checking out src-internal (or any other optional thing), it's
#      easy to end up with stale files still mysteriously triggering build
#      conditions that are no longer appropriate (yes, this happens in real
#      life).
#
# - Do not use a script to iterate files in a directory (glob):
#
#    - This has the same "stale file" problem as the above discussion. Various
#      operations can leave untracked files in the source tree which can cause
#      surprising effects.
#
#    - It becomes impossible to use "git grep" to find where a certain file is
#      referenced. This operation is very common and people really do get
#      confused when things aren't listed.
#
#    - It's easy to screw up. One common case is a build-time script that packs
#      up a directory. The author notices that the script isn't re-run when the
#      directory is updated, so adds a glob so all the files are listed as
#      inputs. This seems to work great... until a file is deleted. When a
#      file is deleted, all the inputs the glob lists will still be up to date
#      and no command-lines will have been changed. The action will not be
#      re-run and the build will be broken. It is possible to get this correct
#      using glob, and it's possible to mess it up without glob, but globs make
#      this situation much easier to create. if the build always lists the
#      files and passes them to a script, it will always be correct.

exec_script_whitelist =
    build_dotfile_settings.exec_script_whitelist +
    angle_dotfile_settings.exec_script_whitelist +
    [
      # Whitelist entries for //build should go into
      # //build/dotfile_settings.gni instead, so that they can be shared
      # with other repos. The entries in this list should be only for files
      # in the Chromium repo outside of //build.
      "//build_overrides/build.gni",

      "//chrome/android/webapk/shell_apk/prepare_upload_dir/BUILD.gn",

      # TODO(dgn): Layer violation but breaks the build otherwise, see
      # https://crbug.com/474506.
      "//clank/java/BUILD.gn",
      "//clank/native/BUILD.gn",

      "//google_apis/BUILD.gn",
      "//printing/BUILD.gn",

      "//remoting/host/installer/linux/BUILD.gn",
      "//remoting/remoting_version.gni",
      "//remoting/host/installer/win/generate_clsids.gni",

      "//tools/grit/grit_rule.gni",
      "//tools/gritsettings/BUILD.gn",
    ]
