# 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/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:rtc_stats",
  "//webrtc/voice_engine",
  "//webrtc/voice_engine:audio_coder",
  "//webrtc/voice_engine:file_player",
  "//webrtc/voice_engine:file_recorder",
  "//webrtc/voice_engine:level_indicator",
]

# 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
