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

# 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 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/*",  # Medium-hard.
  #"//base/*",  # Needs GN binary changes to work on Android.
  "//blink/*",
  "//breakpad/*",
  "//build/*",
  "//cc/*",

  #"//chrome/*",  # Epic number of errors.
  "//chromecast/*",

  # TODO(brettw): Fix http://crbug.com/460828 and uncomment the following
  # line.
  #"//chrome_elf/*",
  "//cloud_print/*",

  #"//components/*",  # Lots of errors.
  #"//content/*",  # A whole lot of errors.
  "//courgette/*",
  "//crypto/*",
  "//data/*",
  "//dbus/*",
  "//device/*",

  #"//extensions/*",  # Lots of errors.
  #"//gin/*",  # Easy.
  "//google_apis/*",
  "//google_update/*",

  #"//gpu/*",  # Lots of errors.
  #"//ios/*",
  "//ipc/*",

  #"//jingle/*",
  #"//media/*",  # Lots of errors.
  #"//mojo/*",
  #"//native_client/*",
  #"//net/*",  # Needs GN binary changes to work on Android.

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

  #"//remoting/*",  # Medium-hard.
  #"//rlz/*",  # Needs checking on Windows.
  #"//sandbox/*",  # Medium-hard.
  "//sdch/*",
  "//skia/*",
  "//sql/*",
  "//storage/*",
  "//sync/*",
  "//testing/*",

  #"//third_party/*",  # May not ever want this.
  "//tools/*",

  #"//ui/*",  # Just a few problems.
  "//url/*",
  "//v8/*",
]
