1# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS.  All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9import("//build/config/arm.gni")
10
11declare_args() {
12  # Assume Chromium build for now, since that's the priority case for getting GN
13  # up and running with WebRTC.
14  build_with_chromium = true
15  build_with_libjingle = true
16
17  # Disable this to avoid building the Opus audio codec.
18  rtc_include_opus = true
19
20  # Used to specify an external Jsoncpp include path when not compiling the
21  # library that comes with WebRTC (i.e. rtc_build_json == 0).
22  rtc_jsoncpp_root = "//third_party/jsoncpp/source/include"
23
24  # Used to specify an external OpenSSL include path when not compiling the
25  # library that comes with WebRTC (i.e. rtc_build_ssl == 0).
26  rtc_ssl_root = ""
27
28  # Adds video support to dependencies shared by voice and video engine.
29  # This should normally be enabled; the intended use is to disable only
30  # when building voice engine exclusively.
31  rtc_enable_video = true
32
33  # Selects fixed-point code where possible.
34  rtc_prefer_fixed_point = false
35
36  # Enable data logging. Produces text files with data logged within engines
37  # which can be easily parsed for offline processing.
38  rtc_enable_data_logging = false
39
40  # Enables the use of protocol buffers for debug recordings.
41  rtc_enable_protobuf = true
42
43  # Disable these to not build components which can be externally provided.
44  rtc_build_json = true
45  rtc_build_libjpeg = true
46  rtc_build_libyuv = true
47  rtc_build_libvpx = true
48  rtc_build_ssl = true
49
50  # Disable by default.
51  rtc_have_dbus_glib = false
52
53  # Enable to use the Mozilla internal settings.
54  build_with_mozilla = false
55
56  # Define MIPS architecture variant, MIPS DSP variant and MIPS FPU
57  # This may be subject to change in accordance to Chromium's MIPS flags
58  mips_arch_variant = "mips32r1"
59  mips_dsp_rev = 0
60  mips_fpu = true
61
62  rtc_enable_android_opensl = true
63
64  # Link-Time Optimizations.
65  # Executes code generation at link-time instead of compile-time.
66  # https://gcc.gnu.org/wiki/LinkTimeOptimization
67  rtc_use_lto = false
68
69  if (build_with_chromium) {
70    # Exclude pulse audio on Chromium since its prerequisites don't require
71    # pulse audio.
72    rtc_include_pulse_audio = false
73
74    # Exclude internal ADM since Chromium uses its own IO handling.
75    rtc_include_internal_audio_device = false
76
77  } else {
78    # Settings for the standalone (not-in-Chromium) build.
79
80    # TODO(andrew): For now, disable the Chrome plugins, which causes a
81    # flood of chromium-style warnings. Investigate enabling them:
82    # http://code.google.com/p/webrtc/issues/detail?id=163
83    clang_use_chrome_plugins = false
84
85    rtc_include_pulse_audio = true
86    rtc_include_internal_audio_device = true
87  }
88
89  if (build_with_libjingle) {
90    rtc_include_tests = false
91    rtc_restrict_logging = true
92  } else {
93    rtc_include_tests = true
94    rtc_restrict_logging = false
95  }
96
97  if (is_ios) {
98    rtc_build_libjpeg = false
99    rtc_enable_protobuf = false
100  }
101
102  if (cpu_arch == "arm") {
103    rtc_prefer_fixed_point = true
104  }
105
106  # WebRTC builds ARM v7 Neon instruction set optimized code for both iOS and
107  # Android, which is why we currently cannot use the variables in
108  # //build/config/arm.gni (since it disables Neon for Android).
109  rtc_build_armv7_neon = (cpu_arch == "arm" && arm_version == 7)
110}
111