# 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).
#
# These flags are ui-related so should eventually be moved to various places
# in //ui/*.
#
# There is more advice on where to put build flags in the "Build flag" section
# of //build/config/BUILDCONFIG.gn.

import("//build/config/chromecast_build.gni")
import("//build/config/chromeos/args.gni")
import("//build/config/chromeos/ui_mode.gni")
import("//build/config/ozone.gni")

declare_args() {
  # Indicates if Aura is enabled. Aura is a low-level windowing library, sort
  # of a replacement for GDI or GTK.
  use_aura = is_win || is_linux || is_chromeos || is_fuchsia
}

declare_args() {
  # True means the UI is built using the "views" framework.
  toolkit_views = is_mac || is_win || is_linux || is_chromeos || is_fuchsia

  use_glib =
      is_linux && !is_chromecast &&
      # Avoid the need for glib when Android is building things via secondary
      # toolchains.
      target_os != "android"
}

assert(!use_glib || (is_linux && !is_chromecast))

use_atk = is_linux && !is_chromecast && use_glib &&
          current_toolchain == default_toolchain

# Whether using Xvfb to provide a display server for a test might be
# necessary.
use_xvfb_in_this_config =
    is_linux || (is_chromeos_lacros && !is_chromeos_device)
#
# =============================================
#   PLEASE DO NOT ADD MORE FLAGS TO THIS FILE
# =============================================
#
# See comment at the top.
