# 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"

# The secondary source root is a parallel directory tree where
# GN build files are placed when they can not be placed directly
# in the source tree, e.g. for third party source trees.
secondary_source = "//build/secondary/"

# 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 = [
    # Dependencies used by the extra libraries. Putting them here causes them
    # to be executed first during snapshot creation.
    "//third_party/blink/renderer/core/streams/CommonOperations.js",
    "//third_party/blink/renderer/core/streams/CommonStrings.js",
    "//third_party/blink/renderer/core/streams/SimpleQueue.js",

    # Extra libraries.
    "//third_party/blink/renderer/core/streams/ByteLengthQueuingStrategy.js",
    "//third_party/blink/renderer/core/streams/CountQueuingStrategy.js",
    "//third_party/blink/renderer/core/streams/ReadableStream.js",
    "//third_party/blink/renderer/core/streams/WritableStream.js",
    "//third_party/blink/renderer/core/streams/TransformStream.js",
  ]
  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 check headers for by default. The files in targets
# matching these patterns (see "gn help label_pattern" for format) will have
# their includes checked for proper dependencies when you run either
# "gn check" or "gn gen --check".
check_targets = [
  #"//apps/*",  # Medium-hard.
  "//ash/*",
  "//base/*",
  "//blink/*",
  "//build/*",
  "//cc/*",

  #"//chrome/android/*",  # 13 errors
  "//chrome/app/*",
  "//chrome/app_shim/*",

  #"//chrome/browser/*",  # ~1300 errors
  #"//chrome/browser:*",  # ~600 errors
  "//chrome/browser/accessibility/*",
  "//chrome/browser/android/*",
  "//chrome/browser/app_mode/*",
  #"//chrome/browser/apps/*",  # 2 errors
  "//chrome/browser/assist_ranker/*",
  "//chrome/browser/autocomplete/*",
  "//chrome/browser/autofill/*",
  "//chrome/browser/background/*",
  "//chrome/browser/background_fetch/*",
  "//chrome/browser/background_sync/*",
  "//chrome/browser/banners/*",
  "//chrome/browser/bitmap_fetcher/*",
  "//chrome/browser/bookmarks/*",
  "//chrome/browser/browsing_data/*",
  "//chrome/browser/budget_service/*",
  "//chrome/browser/captive_portal/*",
  "//chrome/browser/chooser_controller/*",
  "//chrome/browser/chromeos/*",
  "//chrome/browser/client_hints/*",
  "//chrome/browser/clipboard/*",
  "//chrome/browser/component_updater/*",
  "//chrome/browser/conflicts/*",
  "//chrome/browser/consent_auditor/*",
  "//chrome/browser/content_settings/*",
  "//chrome/browser/crash_upload_list/*",
  "//chrome/browser/custom_handlers/*",
  "//chrome/browser/data_saver/*",
  "//chrome/browser/data_use_measurement/*",
  "//chrome/browser/dbus/*",
  #"//chrome/browser/devtools/*",  # 93 errors
  "//chrome/browser/diagnostics/*",
  "//chrome/browser/domain_reliability/*",
  "//chrome/browser/dom_distiller/*",
  "//chrome/browser/downgrade/*",
  "//chrome/browser/download/*",
  "//chrome/browser/drive/*",
  "//chrome/browser/engagement/*",
  "//chrome/browser/extensions/*",
  "//chrome/browser/external_protocol/*",
  "//chrome/browser/favicon/*",
  "//chrome/browser/feature_engagement/*",
  "//chrome/browser/feedback/*",
  "//chrome/browser/first_run/*",
  "//chrome/browser/gcm/*",
  "//chrome/browser/generic_sensor/*",
  "//chrome/browser/geolocation/*",
  "//chrome/browser/google/*",
  "//chrome/browser/gpu/*",
  "//chrome/browser/guest_view/*",
  "//chrome/browser/hang_monitor/*",
  "//chrome/browser/history/*",
  "//chrome/browser/importer/*",
  "//chrome/browser/infobars/*",
  "//chrome/browser/installable/*",
  "//chrome/browser/install_verification/*",
  "//chrome/browser/internal/*",
  "//chrome/browser/interstitials/*",
  "//chrome/browser/invalidation/*",
  "//chrome/browser/language/*",
  "//chrome/browser/lifetime/*",
  #"//chrome/browser/loader/*",  # 2 errors
  "//chrome/browser/local_discovery/*",
  "//chrome/browser/mac/*",
  #"//chrome/browser/media/*",  # 74 errors
  "//chrome/browser/media_galleries/*",
  "//chrome/browser/memory/*",
  "//chrome/browser/metrics/*",
  "//chrome/browser/nacl_host/*",
  "//chrome/browser/navigation_predictor/*",
  "//chrome/browser/net/*",
  "//chrome/browser/notifications/*",
  "//chrome/browser/ntp_snippets/*",
  "//chrome/browser/ntp_tiles/*",
  "//chrome/browser/obsolete_system/*",
  "//chrome/browser/offline_items_collection/*",
  "//chrome/browser/offline_pages/*",
  "//chrome/browser/page_load_metrics/*",
  "//chrome/browser/password_manager/*",
  "//chrome/browser/payments/*",
  "//chrome/browser/pdf/*",
  "//chrome/browser/performance_monitor/*",
  "//chrome/browser/permissions/*",
  "//chrome/browser/picture_in_picture/*",
  "//chrome/browser/plugins/*",
  # "//chrome/browser/policy/*",  # 1 error on Windows
  "//chrome/browser/predictors/*",
  "//chrome/browser/prefetch/*",
  "//chrome/browser/prefs/*",
  "//chrome/browser/prerender/*",
  "//chrome/browser/previews/*",
  "//chrome/browser/printing/*",
  "//chrome/browser/profile_resetter/*",
  "//chrome/browser/profiles/*",
  #"//chrome/browser/profiling_host/*",  # 16 errors
  "//chrome/browser/push_messaging/*",
  "//chrome/browser/recovery/*",
  "//chrome/browser/renderer_context_menu/*",
  "//chrome/browser/renderer_host/*",
  "//chrome/browser/resource_coordinator/*",
  #"//chrome/browser/resources/*",  # 18 errors on ChromeOS
  "//chrome/browser/rlz/*",
  #"//chrome/browser/safe_browsing/*",  # 239 errors
  "//chrome/browser/search/*",
  "//chrome/browser/search_engines/*",
  "//chrome/browser/search_provider_logos/*",
  "//chrome/browser/service_process/*",
  "//chrome/browser/sessions/*",
  "//chrome/browser/signin/*",
  "//chrome/browser/speech/*",
  "//chrome/browser/spellchecker/*",
  "//chrome/browser/ssl/*",
  "//chrome/browser/status_icons/*",
  "//chrome/browser/storage/*",
  "//chrome/browser/subresource_filter/*",
  "//chrome/browser/supervised_user/*",
  "//chrome/browser/sync/*",
  "//chrome/browser/sync_file_system/*",
  "//chrome/browser/tab_contents/*",
  "//chrome/browser/task_manager/*",
  "//chrome/browser/themes/*",
  "//chrome/browser/thumbnails/*",
  "//chrome/browser/tracing/*",
  "//chrome/browser/translate/*",
  "//chrome/browser/ui/*",
  "//chrome/browser/undo/*",
  "//chrome/browser/unified_consent/*",
  "//chrome/browser/update_client/*",
  "//chrome/browser/upgrade_detector/*",
  "//chrome/browser/usb/*",
  "//chrome/browser/vr/*",
  #"//chrome/browser/web_applications/*",  # 66 errors
  "//chrome/browser/webauthn/*",
  "//chrome/browser/webshare/*",
  "//chrome/browser/win/*",

  "//chrome/build/*",
  #"//chrome/child/*",  # 1 error on Windows
  "//chrome/chrome_cleaner/*",
  #"//chrome/chrome_watcher/*",  # 3 errors on Windows
  "//chrome/common/*",
  #"//chrome/elevation_service/*",  # 1 error on Windows
  #"//chrome/gpu/*",  # 7 errors
  "//chrome/installer/*",
  #"//chrome/install_static/*",  # 8 errors on Windows
  "//chrome/nacl/*",
  #"//chrome/notification_helper/*",  # 4 errors on Windows
  #"//chrome/renderer/*",  # ~30 errors
  #"//chrome/service/*",  # 2 errors
  #"//chrome/services/*",  # ~30 errors
  #"//chrome/test/*",  # ~3000 errors
  "//chrome/third_party/*",
  "//chrome/tools/*",
  "//chrome/utility/*",

  "//chromecast/*",
  "//chromeos/*",
  "//chrome_elf/*",
  "//cloud_print/*",
  "//components/*",
  "//content/*",
  "//courgette/*",
  "//crypto/*",
  "//data/*",
  "//dbus/*",
  "//device/*",

  #"//extensions/*",  # Lots of errors.
  "//extensions:extensions_unittests",
  "//extensions/browser:browser_tests",
  "//extensions/browser:unit_tests",
  "//extensions/browser/install:*",
  "//extensions/common:common",
  "//extensions/common:unit_tests",
  "//extensions/renderer:unit_tests",
  "//extensions/shell/*",
  "//gin/*",
  "//google_apis/*",
  "//google_update/*",
  "//gpu/*",

  "//ios/*",
  "//ios_internal/*",
  "//ipc/*",

  #"//jingle/*",
  "//mash/*",

  "//media/*",
  "//mojo/*",

  #"//native_client/*",
  "//net/*",

  #"//pdf/*",  # Medium-hard.
  #"//ppapi/*",  # Lots of errors.
  "//ppapi/examples/*",
  "//ppapi/tests/*",
  "//printing/*",

  #"//remoting/*",  # Medium-hard.
  "//rlz/*",

  #"//sandbox/*",  # Medium-hard.
  "//services/*",
  "//skia/*",
  "//sql/*",
  "//storage/*",
  "//testing/*",

  #"//third_party/*",  # May not ever want this.
  #"//third_party/breakpad/*",  # Small errors.
  "//third_party/boringssl/*",
  "//third_party/brotli/*",
  "//third_party/fuchsia-sdk/*",
  "//third_party/hunspell/*",
  "//third_party/leveldatabase/*",

  #"//third_party/libaddressinput/*",  # Small errors.
  "//third_party/libphonenumber/*",

  #"//third_party/libwebp/*",  # Errors: https://crbug.com/800762
  "//third_party/snappy/*",

  #"//third_party/WebKit/*",  # Errors: https://crbug.com/800764
  #"//third_party/webrtc/*",  # Errors: https://crbug.com/824831
  "//third_party/webrtc_overrides/*",
  "//tools/*",

  "//ui/*",
  "//url/*",

  #"//v8/*",  # Errors: https://bugs.chromium.org/p/v8/issues/detail?id=7330
  "//webrunner/*",
]

# 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.
#
# GYPI_TO_GN
#
# Some of these entries are for legacy gypi_to_gn calls. We should not be
# adding new calls to this script in the build (see //build/gypi_to_gn.py for
# detailed advice). The only time you should be editing this list for
# gypi_to_gn purposes is when moving an existing call to a different place.
#
# 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",

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

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

      # TODO(dpranke): Get these from the appropriate repos instead.
      "//third_party/catapult/tracing/BUILD.gn",
      "//third_party/google_input_tools/inputview.gni",

      "//tools/grit/grit_rule.gni",

      # Not gypi-to-gn.
      "//google_apis/BUILD.gn",
      "//printing/BUILD.gn",
    ]
