110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# Copyright 2014 The Chromium Authors. All rights reserved.
210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# Use of this source code is governed by a BSD-style license that can be
310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# found in the LICENSE file.
410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochimport("//build/config/ui.gni")
610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochif (is_android) {
810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  import("//build/config/android/config.gni")
910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch} else {
1010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  # TODO(brettw) remove this once && early-out is checked in.
1110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  is_android_webview_build = false
1210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch}
1310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochif (cpu_arch == "arm") {
1410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  import("//build/config/arm.gni")
1510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch} else {
1610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  # TODO(brettw) remove this once && early-out is checked in.
1710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  arm_version = 0
1810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch}
1910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
2010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochdeclare_args() {
2110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  # Enables the Oilpan garbage-collection infrastructure.
2210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  enable_oilpan = false
2310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
2410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  # Set to true to enable the clang plugin that checks the usage of the Blink
2510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  # garbage-collection infrastructure during compilation.
2610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  blink_gc_plugin = false
2710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  blink_gc_plugin_dump_graph = false
28197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
29197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch  blink_asserts_always_on = false
3010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch}
3110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
3210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochuse_default_render_theme = use_aura
3310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
3410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# Whether Android ARM or x86 build uses OpenMAX DL FFT. Currently only
3510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# supported on Android ARMv7+, ia32 or x64 without webview. When enabled, this
3610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# will also enable WebAudio support on Android ARM, ia32 and x64. Default is
3710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# enabled. Whether WebAudio is actually available depends on runtime settings
3810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# and flags.
3910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochuse_openmax_dl_fft = is_android && !is_android_webview_build &&
4010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch  (cpu_arch == "x86" ||
4110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch   cpu_arch == "x64" ||
427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci   (cpu_arch == "arm" && arm_version >= 7))
4310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
44d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)use_webaudio_ffmpeg = !is_mac && !is_android
45d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
4610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# Set this to true to enable use of concatenated impulse responses for the HRTF
4710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# panner in WebAudio.
4810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch# TODO(brettw) do we need this or can we assume its always on?
4910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochuse_concatenated_impulse_responses = true
50d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
51d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)# feature_defines_list ---------------------------------------------------------
52d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
53d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)feature_defines_list = [
54d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  "ENABLE_SVG_FONTS=1",
55d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)]
56d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
57d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)if (is_debug) {
58d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  # TODO(GYP) this should also be set when release_valgrind_build is set,
59d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  # but we don't have that flag in the GN build yet.
60d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  feature_defines_list += [ "WTF_USE_DYNAMIC_ANNOTATIONS=1" ]
61d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}
62d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
63d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)if (use_concatenated_impulse_responses) {
64d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  feature_defines_list += [ "WTF_USE_CONCATENATED_IMPULSE_RESPONSES=1" ]
65d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}
66d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
67197021e6b966cfb06891637935ef33fff06433d1Ben Murdochif (!is_android) {
68d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  feature_defines_list += [
69d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    "ENABLE_INPUT_MULTIPLE_FIELDS_UI=1",
70d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    "ENABLE_WEB_AUDIO=1",
71d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  ]
72d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}
73d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
74d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)if (use_webaudio_ffmpeg) {
75d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  feature_defines_list += [ "WTF_USE_WEBAUDIO_FFMPEG=1" ]
76d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}
77d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
78d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)if (use_openmax_dl_fft) {
79d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  feature_defines_list += [
80d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    "WTF_USE_WEBAUDIO_OPENMAX_DL_FFT=1",
81d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    # Enabling the FFT is enough to enable WebAudio support to
82d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    # allow most WebAudio features to work on Android.
83d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    "ENABLE_WEB_AUDIO=1",
84d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  ]
85d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}
86d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
87d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)if (!is_mac) {
88d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  # Mac OS X has not implemented support for ENABLE(OPENTYPE_VERTICAL) yet.
89d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  feature_defines_list += [ "ENABLE_OPENTYPE_VERTICAL=1" ]
90d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}
91d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
92d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)if (use_default_render_theme) {
93d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  feature_defines_list += [ "WTF_USE_DEFAULT_RENDER_THEME=1" ]
94d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}
95d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)if (enable_oilpan) {
96d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)  feature_defines_list += [ "ENABLE_OILPAN=1" ]
97d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}
98197021e6b966cfb06891637935ef33fff06433d1Ben Murdochif (blink_asserts_always_on) {
99197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch  feature_defines_list += [ "ENABLE_ASSERT=1" ]
100197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
101d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
102d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)# feature_defines_string -------------------------------------------------------
103d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
104d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)# Convert the list to a space-separated string for passing to scripts.
105d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)# This would be the equivalent of passing '<(feature_defines)' in GYP.
106d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)feature_defines_string = exec_script(
107d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    "build/gn_list_to_space_separated_string.py",
108d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    feature_defines_list,
109d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    "trim string")
110