# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# =============================================
#   PLEASE DO NOT ADD MORE FLAGS TO THIS FILE
# =============================================
#
# These flags are effectively global. Your feature flag should go near the
# code it controls. Most of these items are here now because they control
# legacy global #defines passed to the compiler (now replaced with generated
# buildflag headers -- see //build/buildflag_header.gni).
#
# There is more advice on where to put build flags in the "Build flag" section
# of //build/config/BUILDCONFIG.gn.

import("//build/config/chrome_build.gni")
import("//build/config/chromecast_build.gni")

declare_args() {
  # Enables proprietary codecs and demuxers; e.g. H264, AAC, MP3, and MP4.
  # We always build Google Chrome and Chromecast with proprietary codecs.
  #
  # Note: this flag is used by WebRTC which is DEPSed into Chrome. Moving it
  # out of //build will require using the build_overrides directory.
  proprietary_codecs = is_chrome_branded || is_chromecast

  # libudev usage. This currently only affects the content layer.
  use_udev = (is_linux || is_chromeos) && !is_chromecast

  use_dbus = (is_linux || is_chromeos) && !is_chromecast

  use_gio = is_linux && !is_chromecast
}
#
# =============================================
#   PLEASE DO NOT ADD MORE FLAGS TO THIS FILE
# =============================================
#
# See comment at the top.
