blob: 6c6c23cfa0550cc00fbe5fac426d1f6ebece599d [file] [log] [blame]
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:031# 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
kjellander@webrtc.orgb94f8472014-06-28 18:05:229# TODO(kjellander): Rebase this to webrtc/build/common.gypi changes after r6330.
10
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0311import("//build/config/crypto.gni")
12import("//build/config/linux/pkg_config.gni")
13import("build/webrtc.gni")
14
15# Contains the defines and includes in common.gypi that are duplicated both as
16# target_defaults and direct_dependent_settings.
17config("common_inherited_config") {
18 defines = []
19 if (build_with_mozilla) {
20 defines += [ "WEBRTC_MOZILLA_BUILD" ]
21 }
22 if (build_with_chromium) {
Henrik Kjellander3a037992015-05-25 10:55:3923 defines = [ "WEBRTC_CHROMIUM_BUILD" ]
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0324 include_dirs = [
25 # overrides must be included first as that is the mechanism for
26 # selecting the override headers in Chromium.
27 "overrides",
Henrik Kjellander3a037992015-05-25 10:55:3928
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0329 # Allow includes to be prefixed with webrtc/ in case it is not an
30 # immediate subdirectory of the top-level.
31 "..",
32 ]
33 }
34 if (is_posix) {
35 defines += [ "WEBRTC_POSIX" ]
36 }
37 if (is_ios) {
38 defines += [
39 "WEBRTC_MAC",
40 "WEBRTC_IOS",
41 ]
42 }
43 if (is_linux) {
44 defines += [ "WEBRTC_LINUX" ]
45 }
46 if (is_mac) {
47 defines += [ "WEBRTC_MAC" ]
48 }
49 if (is_win) {
50 defines += [ "WEBRTC_WIN" ]
51 }
52 if (is_android) {
53 defines += [
54 "WEBRTC_LINUX",
55 "WEBRTC_ANDROID",
56 ]
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0357 }
58}
59
kjellander@webrtc.org4ad10d62014-09-07 17:36:1060if (rtc_have_dbus_glib) {
kjellander@webrtc.orgb94f8472014-06-28 18:05:2261 pkg_config("dbus-glib") {
62 packages = [ "dbus-glib-1" ]
63 }
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0364}
65
66config("common_config") {
kjellander@webrtc.orga6635482014-09-04 14:10:4967 cflags = []
68 cflags_cc = []
kjellander@webrtc.org4ad10d62014-09-07 17:36:1069 if (rtc_restrict_logging) {
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0370 defines = [ "WEBRTC_RESTRICT_LOGGING" ]
71 }
72
kjellander@webrtc.org4ad10d62014-09-07 17:36:1073 if (rtc_have_dbus_glib) {
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0374 defines += [ "HAVE_DBUS_GLIB" ]
Henrik Kjellander3a037992015-05-25 10:55:3975
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0376 # TODO(kjellander): Investigate this, it seems like include <dbus/dbus.h>
77 # is still not found even if the execution of
78 # build/config/linux/pkg-config.py dbus-glib-1 returns correct include
79 # dirs on Linux.
80 all_dependent_configs = [ "dbus-glib" ]
81 }
82
brettw@chromium.org02002ef2014-09-09 19:15:3383 if (build_with_chromium) {
84 defines += [ "LOGGING_INSIDE_WEBRTC" ]
85 } else {
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0386 if (is_posix) {
87 # -Wextra is currently disabled in Chromium"s common.gypi. Enable
88 # for targets that can handle it. For Android/arm64 right now
89 # there will be an "enumeral and non-enumeral type in conditional
90 # expression" warning in android_tools/ndk_experimental"s version
91 # of stlport.
92 # See: https://code.google.com/p/chromium/issues/detail?id=379699
kjellander@webrtc.org800e3012015-02-23 19:08:3193 if (current_cpu != "arm64" || !is_android) {
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0394 cflags = [
95 "-Wextra",
Henrik Kjellander3a037992015-05-25 10:55:3996
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:0397 # We need to repeat some flags from Chromium"s common.gypi
98 # here that get overridden by -Wextra.
99 "-Wno-unused-parameter",
100 "-Wno-missing-field-initializers",
101 "-Wno-strict-overflow",
102 ]
103 cflags_cc = [
104 "-Wnon-virtual-dtor",
Henrik Kjellander3a037992015-05-25 10:55:39105
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03106 # This is enabled for clang; enable for gcc as well.
107 "-Woverloaded-virtual",
108 ]
109 }
110 }
111
112 if (is_clang) {
113 cflags += [ "-Wthread-safety" ]
114 }
115 }
116
kjellander@webrtc.org800e3012015-02-23 19:08:31117 if (current_cpu == "arm64") {
Andrew MacDonaldab168022015-05-20 05:20:17118 defines += [ "WEBRTC_ARCH_ARM64" ]
119 defines += [ "WEBRTC_HAS_NEON" ]
tkchin@webrtc.org8a3acf62014-10-31 00:14:39120 }
121
kjellander@webrtc.org800e3012015-02-23 19:08:31122 if (current_cpu == "arm") {
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03123 defines += [ "WEBRTC_ARCH_ARM" ]
andrew@webrtc.org1b536882014-11-26 17:01:40124 if (arm_version >= 7) {
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03125 defines += [ "WEBRTC_ARCH_ARM_V7" ]
126 if (arm_use_neon) {
Andrew MacDonaldab168022015-05-20 05:20:17127 defines += [ "WEBRTC_HAS_NEON" ]
128 } else if (arm_optionally_use_neon) {
129 defines += [ "WEBRTC_DETECT_NEON" ]
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03130 }
131 }
132 }
133
kjellander@webrtc.org800e3012015-02-23 19:08:31134 if (current_cpu == "mipsel") {
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03135 defines += [ "MIPS32_LE" ]
kjellander@webrtc.org5e7c7e32015-03-04 09:50:31136 if (mips_float_abi == "hard") {
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03137 defines += [ "MIPS_FPU_LE" ]
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03138 }
kjellander@webrtc.orgcdb02a72015-01-25 19:17:56139 if (mips_arch_variant == "r2") {
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03140 defines += [ "MIPS32_R2_LE" ]
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03141 }
142 if (mips_dsp_rev == 1) {
143 defines += [ "MIPS_DSP_R1_LE" ]
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03144 } else if (mips_dsp_rev == 2) {
145 defines += [
146 "MIPS_DSP_R1_LE",
147 "MIPS_DSP_R2_LE",
148 ]
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03149 }
150 }
151
152 # TODO(kjellander): Handle warnings on Windows where WebRTC differ from the
153 # default warnings set in build/config/compiler/BUILD.gn.
154
155 if (is_android && is_clang) {
156 # The Android NDK doesn"t provide optimized versions of these
157 # functions. Ensure they are disabled for all compilers.
158 cflags += [
159 "-fno-builtin-cos",
160 "-fno-builtin-sin",
161 "-fno-builtin-cosf",
162 "-fno-builtin-sinf",
163 ]
164 }
165}
166
kjellander@webrtc.orgb02f7122014-11-12 07:56:21167source_set("webrtc") {
kjellander@webrtc.org3610f632014-06-23 19:21:07168 sources = [
169 "call.h",
170 "config.h",
171 "experiments.h",
172 "frame_callback.h",
173 "transport.h",
174 ]
175
kjellander@webrtc.org296871b2014-09-28 17:37:22176 configs += [ ":common_config" ]
Henrik Kjellander3a037992015-05-25 10:55:39177 public_configs = [ ":common_inherited_config" ]
kjellander@webrtc.orgccf0fef2014-07-13 09:02:54178
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03179 deps = [
kjellander@webrtc.org3610f632014-06-23 19:21:07180 ":webrtc_common",
kjellander@webrtc.org551f2552015-01-21 20:22:33181 "base:rtc_base",
kjellander@webrtc.org3610f632014-06-23 19:21:07182 "common_audio",
183 "common_video",
184 "modules/audio_coding",
185 "modules/audio_conference_mixer",
186 "modules/audio_device",
187 "modules/audio_processing",
188 "modules/bitrate_controller",
189 "modules/desktop_capture",
190 "modules/media_file",
191 "modules/rtp_rtcp",
192 "modules/utility",
kjellander@webrtc.org3610f632014-06-23 19:21:07193 "modules/video_coding",
194 "modules/video_processing",
kjellander@webrtc.orgac5cd562014-06-21 14:25:16195 "system_wrappers",
kjellander@webrtc.orgf5723bd2014-09-30 18:05:02196 "tools",
kjellander@webrtc.org3610f632014-06-23 19:21:07197 "video",
198 "video_engine",
199 "voice_engine",
200 ]
kjellander@webrtc.org12971d42015-02-11 07:47:00201
202 if (build_with_chromium) {
203 deps += [
Henrik Kjellander3a037992015-05-25 10:55:39204 "modules/video_capture",
205 "modules/video_render",
kjellander@webrtc.org12971d42015-02-11 07:47:00206 ]
207 }
kjellander@webrtc.org3610f632014-06-23 19:21:07208}
209
kjellander@webrtc.orgf5723bd2014-09-30 18:05:02210if (!build_with_chromium) {
211 executable("webrtc_tests") {
212 testonly = true
213 deps = [
214 ":webrtc",
215 "modules/video_render:video_render_internal_impl",
216 "modules/video_capture:video_capture_internal_impl",
217 "test",
218 ]
219 }
220}
221
kjellander@webrtc.org3610f632014-06-23 19:21:07222source_set("webrtc_common") {
223 sources = [
kwiberg@webrtc.orgc4e2cd02015-02-26 13:59:22224 "common_types.cc",
kjellander@webrtc.org75b626b2015-01-26 19:17:26225 "common_types.h",
kjellander@webrtc.org3610f632014-06-23 19:21:07226 "config.cc",
Henrik Kjellander3a037992015-05-25 10:55:39227 "config.h",
kjellander@webrtc.org75b626b2015-01-26 19:17:26228 "engine_configurations.h",
229 "typedefs.h",
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03230 ]
kjellander@webrtc.orgccf0fef2014-07-13 09:02:54231
kjellander@webrtc.org296871b2014-09-28 17:37:22232 configs += [ ":common_config" ]
233 public_configs = [ ":common_inherited_config" ]
kjellander@webrtc.orgd6d5bff2014-06-17 08:54:03234}
kjellander@webrtc.org75b626b2015-01-26 19:17:26235
236source_set("gtest_prod") {
237 sources = [
238 "test/testsupport/gtest_prod_util.h",
239 ]
240}