# 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/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:*",  # 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/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",
    ]
