# 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.

import("//build/config/ui.gni")

if (is_android) {
  import("//build/config/android/config.gni")
} else {
  # TODO(brettw) remove this once && early-out is checked in.
  is_android_webview_build = false
}
if (cpu_arch == "arm") {
  import("//build/config/arm.gni")
} else {
  # TODO(brettw) remove this once && early-out is checked in.
  arm_version = 0
}

declare_args() {
  # Enables the Oilpan garbage-collection infrastructure.
  enable_oilpan = false

  # Set to true to enable the clang plugin that checks the usage of the Blink
  # garbage-collection infrastructure during compilation.
  blink_gc_plugin = false
  blink_gc_plugin_dump_graph = false
}

use_default_render_theme = use_aura

# Whether Android ARM or x86 build uses OpenMAX DL FFT. Currently only
# supported on Android ARMv7+, ia32 or x64 without webview. When enabled, this
# will also enable WebAudio support on Android ARM, ia32 and x64. Default is
# enabled. Whether WebAudio is actually available depends on runtime settings
# and flags.
use_openmax_dl_fft = is_android && !is_android_webview_build &&
  (cpu_arch == "x86" ||
   cpu_arch == "x64" ||
   (cpu_arch == "arm" && arm_version > 7))

use_webaudio_ffmpeg = !is_mac && !is_android

# Set this to true to enable use of concatenated impulse responses for the HRTF
# panner in WebAudio.
# TODO(brettw) do we need this or can we assume its always on?
use_concatenated_impulse_responses = true

# feature_defines_list ---------------------------------------------------------

feature_defines_list = [
  "ENABLE_CUSTOM_SCHEME_HANDLER=0",
  "ENABLE_SVG_FONTS=1",
]

if (is_debug) {
  # TODO(GYP) this should also be set when release_valgrind_build is set,
  # but we don't have that flag in the GN build yet.
  feature_defines_list += [ "WTF_USE_DYNAMIC_ANNOTATIONS=1" ]
}

if (use_concatenated_impulse_responses) {
  feature_defines_list += [ "WTF_USE_CONCATENATED_IMPULSE_RESPONSES=1" ]
}

if (is_android) {
  feature_defines_list += [
    "ENABLE_MEDIA_CAPTURE=1",
  ]
} else {
  feature_defines_list += [
    "ENABLE_INPUT_MULTIPLE_FIELDS_UI=1",
    "ENABLE_MEDIA_CAPTURE=0",
    "ENABLE_WEB_AUDIO=1",
  ]
}

if (use_webaudio_ffmpeg) {
  feature_defines_list += [ "WTF_USE_WEBAUDIO_FFMPEG=1" ]
}

if (use_openmax_dl_fft) {
  feature_defines_list += [
    "WTF_USE_WEBAUDIO_OPENMAX_DL_FFT=1",
    # Enabling the FFT is enough to enable WebAudio support to
    # allow most WebAudio features to work on Android.
    "ENABLE_WEB_AUDIO=1",
  ]
}

if (!is_mac) {
  # Mac OS X has not implemented support for ENABLE(OPENTYPE_VERTICAL) yet.
  feature_defines_list += [ "ENABLE_OPENTYPE_VERTICAL=1" ]
}

if (use_default_render_theme) {
  feature_defines_list += [ "WTF_USE_DEFAULT_RENDER_THEME=1" ]
}
if (enable_oilpan) {
  feature_defines_list += [ "ENABLE_OILPAN=1" ]
}

# feature_defines_string -------------------------------------------------------

# Convert the list to a space-separated string for passing to scripts.
# This would be the equivalent of passing '<(feature_defines)' in GYP.
feature_defines_string = exec_script(
    "build/gn_list_to_space_separated_string.py",
    feature_defines_list,
    "trim string")