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

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

    # Extra libraries.
    "//third_party/WebKit/Source/core/streams/ByteLengthQueuingStrategy.js",
    "//third_party/WebKit/Source/core/streams/CountQueuingStrategy.js",
    "//third_party/WebKit/Source/core/streams/ReadableStream.js",
    "//third_party/WebKit/Source/core/streams/WritableStream.js",
  ]
  v8_experimental_extra_library_files = []
  v8_enable_gdbjit = false
  v8_imminent_deprecation_warnings = false
}

# 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/*",
  "//breakpad/*",
  "//build/*",
  "//cc/*",

  #"//chrome/*",  # Epic number of errors.
  "//chrome/app/*",
  "//chrome/browser/extensions/*",
  "//chrome/browser/ui/*",
  "//chrome/common/*",
  "//chrome/installer/*",
  "//chrome/third_party/mozilla_security_manager/*",
  "//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/common:unit_tests",
  "//extensions/renderer:unit_tests",
  "//extensions/shell:browser_tests",
  "//extensions/shell:unit_tests",
  "//extensions/utility:unit_tests",
  "//gin/*",
  "//google_apis/*",
  "//google_update/*",
  "//gpu/*",

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

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

  #"//media/*",  # Lots of errors.
  #"//media/base/*",
  #"//media/capture/*",
  "//media/cast/*",
  "//media:media",
  "//media:shared_memory_support",
  "//media:media_unittests",
  "//media:audio_unittests",
  "//media:media_perftests",
  "//media/audio/*",
  "//media/blink/*",
  "//media/cdm/*",
  "//media/ffmpeg/*",
  "//media/gpu/*",
  "//media/midi/*",
  "//media/mojo/*",
  "//media/remoting/*",
  "//media/test/*",

  "mojo/*",

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

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

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

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

  #"//third_party/*",  # May not ever want this.
  "//third_party/hunspell/*",
  "//third_party/libaddressinput/*",
  "//third_party/libphonenumber/*",
  "//third_party/WebKit/Source/*",
  "//tools/*",

  #"//ui/*",  # Work left on Chromeos w/ use_ozone. Some parts of UI that work:
  "//ui/accessibility/*",
  "//ui/android/*",
  "//ui/app_list/*",
  "//ui/arc/*",
  "//ui/aura/*",
  "//ui/aura_extra/*",
  "//ui/base/*",
  "//ui/chromeos/*",
  "//ui/compositor/*",
  "//ui/content_accelerators/*",
  "//ui/display/*",
  "//ui/events/*",
  "//ui/file_manager/*",
  "//ui/gfx/*",
  "//ui/gl/*",
  "//ui/keyboard/*",
  "//ui/latency_info/*",
  "//ui/login/*",
  "//ui/message_center/*",
  "//ui/mojo/*",
  "//ui/native_theme/*",
  "//ui/ozone/*",
  "//ui/platform_window/*",
  "//ui/resources/*",
  "//ui/shell_dialogs/*",
  "//ui/snapshot/*",
  "//ui/strings/*",
  "//ui/surface/*",
  "//ui/touch_selection/*",
  "//ui/views/*",
  "//ui/views_content_client/*",
  "//ui/web_dialogs/*",
  "//ui/webui/*",
  "//ui/wm/*",
  "//url/*",
  "//v8/*",
  "//win8/*",
]

# 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 existance 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 + [
      # 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/angle/BUILD.gn",
      "//third_party/angle/src/tests/BUILD.gn",
      "//third_party/angle/src/vulkan_support/BUILD.gn",
      "//third_party/catapult/tracing/BUILD.gn",
      "//third_party/google_input_tools/inputview.gni",

      # CLD2 should be removed soon, delete this when we do.
      "//third_party/cld_2/BUILD.gn",
      "//tools/grit/grit_rule.gni",

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