# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

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 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".
# TODO(kjellander): Keep adding paths to this list as work in webrtc:5589 is done.
check_targets = [
  "//webrtc/api/*",
  "//webrtc/audio/*",
  "//webrtc/call/*",
  "//webrtc/common_video/*",
  "//webrtc/common_audio/*",
  "//webrtc/modules/audio_coding/*",
  "//webrtc/modules/audio_conference_mixer/*",
  "//webrtc/modules/audio_device/*",
  "//webrtc/modules/audio_mixer/*",
  "//webrtc/modules/audio_processing/*",
  "//webrtc/modules/bitrate_controller/*",
  "//webrtc/modules/congestion_controller/*",
  "//webrtc/modules/desktop_capture/*",
  "//webrtc/modules/media_file/*",
  "//webrtc/modules/pacing/*",
  "//webrtc/modules/rtp_rtcp/*",
  "//webrtc/modules/utility/*",
  "//webrtc/modules/video_capture/*",
  "//webrtc/modules/video_coding/*",
  "//webrtc/modules/video_processing/*",
  "//webrtc/modules/remote_bitrate_estimator/*",
  "//webrtc/stats/*",
  "//webrtc/voice_engine/*",
]

# 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 = build_dotfile_settings.exec_script_whitelist

default_args = {
  # Webrtc does not support component builds because we are not using the
  # template "component" but we rely directly on "rtc_static_library" and
  # "rtc_shared_library". This means that we cannot use the chromium default
  # value for this argument.
  # This also means that the user can override this value using --args or
  # the args.gn file but this setting will be ignored because we don't support
  # component builds.
  is_component_build = false
}
