# 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.
  #"//chrome/installer/*", # A few errors, need to verify the size after fixing.
  "//chromecast/*",

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

  #"//components/*",  # Lots of errors.
  "//components/app_modal/*",
  "//components/autofill/*",
  "//components/bookmarks/*",
  "//components/google/*",
  "//components/history/*",

  # TODO(dpranke): Reenable once v8 exports v8_base as a public_dep
  #"//components/html_viewer/*",

  "//components/mus/*",
  "//components/omnibox/*",
  "//components/os_crypt/*",
  "//components/pref_registry/*",
  "//components/undo/*",
  "//components/update_client/*",
  "//components/url_formatter/*",
  "//components/url_matcher/*",
  "//components/user_manager/*",
  "//components/user_prefs/*",
  "//components/variations/*",
  "//components/wallpaper/*",
  "//components/web_cache/*",
  "//components/webcrypto/*",
  "//components/web_modal/*",
  "//components/web_view/*",
  "//components/webdata/*",
  "//components/webdata_services/*",

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

  #"//device/*",  # Ran into http://crbug.com/500761 adding dbus dependency

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

  #"//gpu/*",  # Lots of errors.
  "//gpu:*",

  #"//ios/*",
  "//ipc/*",

  #"//jingle/*",
  "//mandoline/*",

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

# 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 except for gypi_to_gn calls.
exec_script_whitelist = [
  "//ash/BUILD.gn",
  "//build/config/android/config.gni",
  "//build/config/android/internal_rules.gni",
  "//build/config/android/rules.gni",
  "//build/config/compiler/BUILD.gn",
  "//build/config/gcc/gcc_version.gni",
  "//build/config/ios/ios_sdk.gni",
  "//build/config/linux/BUILD.gn",
  "//build/config/linux/pkg_config.gni",
  "//build/config/mac/mac_sdk.gni",
  "//build/config/posix/BUILD.gn",
  "//build/config/win/BUILD.gn",
  "//build/config/win/visual_studio_version.gni",
  "//build/gn_helpers.py",
  "//build/gypi_to_gn.py",
  "//build/linux/BUILD.gn",
  "//build/toolchain/gcc_toolchain.gni",
  "//build/toolchain/mac/BUILD.gn",
  "//build/toolchain/nacl/BUILD.gn",
  "//build/toolchain/win/BUILD.gn",
  "//build/util/version.gni",
  "//chrome/android/BUILD.gn",
  "//chrome/browser/BUILD.gn",
  "//chrome/browser/chromeos/BUILD.gn",
  "//chrome/browser/extensions/BUILD.gn",
  "//chrome/browser/resources/chromeos/chromevox/BUILD.gn",
  "//chrome/browser/media/router/BUILD.gn",
  "//chrome/browser/ui/BUILD.gn",
  "//chrome/chrome_tests.gni",
  "//chrome/common/BUILD.gn",
  "//chrome/common/extensions/api/schemas.gni",
  "//chrome/renderer/BUILD.gn",
  "//chrome/test/BUILD.gn",
  "//chrome/utility/BUILD.gn",
  "//chromeos/BUILD.gn",

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

  "//components/domain_reliability/BUILD.gn",
  "//components/scheduler/scheduler.gni",
  "//content/browser/browser.gni",
  "//content/child/child.gni",
  "//content/common/common.gni",
  "//content/content.gni",
  "//content/public/android/BUILD.gn",
  "//content/renderer/renderer.gni",
  "//content/test/BUILD.gn",
  "//content/utility/utility.gni",
  "//extensions/common/api/schemas.gni",
  "//extensions/extensions.gni",
  "//extensions/shell/app_shell.gni",
  "//extensions/shell/common/api/schemas.gni",
  "//google_apis/BUILD.gn",
  "//gpu/gles2_conform_support/BUILD.gn",
  "//jingle/BUILD.gn",
  "//net/BUILD.gn",
  "//ppapi/ppapi_sources.gni",
  "//printing/BUILD.gn",
  "//remoting/host/BUILD.gn",
  "//remoting/remoting_srcs.gni",
  "//remoting/remoting_version.gni",
  "//skia/BUILD.gn",
  "//third_party/android_platform/BUILD.gn",
  "//third_party/angle/BUILD.gn",
  "//third_party/angle/src/tests/BUILD.gn",
  "//third_party/boringssl/BUILD.gn",
  "//third_party/catapult/tracing/BUILD.gn",
  "//third_party/cld_2/BUILD.gn",
  "//third_party/cython/rules.gni",
  "//third_party/google_input_tools/inputview.gni",
  "//third_party/harfbuzz-ng/BUILD.gn",
  "//third_party/libaddressinput/BUILD.gn",
  "//third_party/opus/BUILD.gn",
  "//third_party/WebKit/Source/bindings/bindings.gni",
  "//third_party/WebKit/Source/bindings/scripts/scripts.gni",
  "//third_party/WebKit/Source/config.gni",
  "//third_party/WebKit/Source/core/core.gni",
  "//third_party/WebKit/Source/devtools/BUILD.gn",
  "//third_party/WebKit/Source/modules/modules.gni",
  "//third_party/WebKit/Source/platform/BUILD.gn",
  "//third_party/WebKit/Source/platform/platform.gni",
  "//third_party/WebKit/Source/web/BUILD.gn",
  "//third_party/WebKit/Source/wtf/BUILD.gn",
  "//third_party/WebKit/public/BUILD.gn",
  "//tools/gn/BUILD.gn",
  "//tools/gn/build_settings.h",
  "//tools/gn/command_help.cc",
  "//tools/gn/docs/language.md",
  "//tools/gn/format_test_data/053.gn",
  "//tools/gn/format_test_data/053.golden",
  "//tools/gn/format_test_data/055.gn",
  "//tools/gn/format_test_data/055.golden",
  "//tools/gn/function_exec_script.cc",
  "//tools/gn/gn.gyp",
  "//tools/gn/input_conversion.cc",
  "//tools/gn/misc/emacs/gn.el",
  "//tools/gn/misc/vim/syntax/gn.vim",
  "//tools/gn/setup.cc",
  "//ui/accessibility/BUILD.gn",
  "//ui/views/BUILD.gn",
]
