blob: a415efbac7e0a8952c87962f23203b5a59cba75e [file] [log] [blame]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +00001# 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/crypto.gni")
henrike@webrtc.orgfb1eb432014-08-15 14:44:13 +000010import("//build/config/ui.gni")
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000011import("../build/webrtc.gni")
12
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +020013if (is_android) {
14 import("//build/config/android/config.gni")
15 import("//build/config/android/rules.gni")
16}
17
kjellander84ba8b62016-04-24 23:03:07 -070018config("rtc_base_approved_all_dependent_config") {
19 if (is_mac && !build_with_chromium) {
20 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
21 }
22}
23
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000024config("rtc_base_config") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000025 include_dirs = [
26 "//third_party/jsoncpp/overrides/include",
27 "//third_party/jsoncpp/source/include",
28 ]
29
30 defines = [
31 "FEATURE_ENABLE_SSL",
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000032 "LOGGING=1",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000033 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000034}
35
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000036config("rtc_base_chromium_config") {
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020037 defines = [ "NO_MAIN_THREAD_WRAPPING" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000038}
39
40config("openssl_config") {
41 defines = [
42 "SSL_USE_OPENSSL",
43 "HAVE_OPENSSL_SSL_H",
44 ]
45}
46
kjellanderb1f14062016-04-25 00:01:36 -070047config("rtc_base_all_dependent_config") {
48 if (is_ios) {
49 libs = [
50 "CFNetwork.framework",
Zeke Chin2d3b7e22015-07-14 12:55:44 -070051
kjellanderb1f14062016-04-25 00:01:36 -070052 #"Foundation.framework", # Already in //build/config:default_libs.
53 "Security.framework",
54 "SystemConfiguration.framework",
kjellander3bcedd32016-06-08 01:14:15 -070055 "UIKit.framework",
kjellanderb1f14062016-04-25 00:01:36 -070056 ]
57 }
58 if (is_mac) {
59 libs = [
60 "Cocoa.framework",
61 "Foundation.framework",
62 "IOKit.framework",
63 "Security.framework",
64 "SystemConfiguration.framework",
65 ]
magjed4e0581f2016-09-08 05:34:53 -070066 if (current_cpu == "x86") {
67 libs += [ "Carbon.framework" ]
68 }
kjellanderb1f14062016-04-25 00:01:36 -070069 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000070}
71
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000072if (is_linux && !build_with_chromium) {
73 # Provides the same functionality as the //crypto:platform target, which
74 # WebRTC cannot use as we don't sync src/crypto from Chromium.
75 group("linux_system_ssl") {
svaldez7f7a8192016-04-18 11:13:11 -070076 deps = [
77 "//third_party/boringssl",
78 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000079 }
80}
81
kjellanderec5c9062016-08-19 01:07:30 -070082if (!rtc_build_ssl) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000083 config("external_ssl_library") {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000084 assert(rtc_ssl_root != "",
85 "You must specify rtc_ssl_root when rtc_build_ssl==0.")
86 include_dirs = [ rtc_ssl_root ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000087 }
88}
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000089
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000090# The subset of rtc_base approved for use outside of libjingle.
ehmaldonado38a21322016-09-02 04:10:34 -070091rtc_static_library("rtc_base_approved") {
tommic06b1332016-05-14 11:31:40 -070092 defines = []
aleloi16f55a12016-08-23 08:08:23 -070093 libs = []
Peter Boström11e02292015-11-25 21:36:14 +010094 deps = []
kjellander84ba8b62016-04-24 23:03:07 -070095 all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ]
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000096
97 sources = [
Karl Wiberge2a83ee2015-10-26 19:51:29 +010098 "array_view.h",
Peter Boströmff019b02015-04-30 14:16:07 +020099 "atomicops.h",
Tommicc4fdde2016-04-22 19:34:59 +0200100 "bind.h",
Noah Richards915590e2015-04-22 15:43:08 -0700101 "bitbuffer.cc",
102 "bitbuffer.h",
Karl Wiberg94784372015-04-20 14:03:07 +0200103 "buffer.h",
Joachim Bauch6f2ef742015-05-21 17:52:01 +0200104 "bufferqueue.cc",
105 "bufferqueue.h",
Noah Richards915590e2015-04-22 15:43:08 -0700106 "bytebuffer.cc",
107 "bytebuffer.h",
108 "byteorder.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000109 "checks.cc",
110 "checks.h",
Peter Boströmfd5dae32015-11-26 12:54:24 +0100111 "constructormagic.h",
tommiebfbab52016-03-19 11:36:18 -0700112 "copyonwritebuffer.cc",
113 "copyonwritebuffer.h",
Tommi494f2092015-04-27 17:39:23 +0200114 "criticalsection.cc",
115 "criticalsection.h",
kwiberg45fd9fe2015-12-16 01:09:16 -0800116 "deprecation.h",
tommi@webrtc.org4c0fd962015-02-09 10:23:27 +0000117 "event.cc",
118 "event.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000119 "event_tracer.cc",
120 "event_tracer.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000121 "exp_filter.cc",
122 "exp_filter.h",
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200123 "file.cc",
124 "file.h",
ivoc48052312016-08-25 04:43:45 -0700125 "format_macros.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700126 "location.cc",
127 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000128 "md5.cc",
129 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000130 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000131 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700132 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700133 "onetimeevent.h",
Karl Wibergbe579832015-11-10 22:34:18 +0100134 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000135 "platform_file.cc",
136 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200137 "platform_thread.cc",
138 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800139 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200140 "race_checker.cc",
141 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800142 "random.cc",
143 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700144 "rate_limiter.cc",
145 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800146 "rate_statistics.cc",
147 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700148 "ratetracker.cc",
149 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800150 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800151 "safe_conversions.h",
152 "safe_conversions_impl.h",
kwibergac554ee2016-09-02 00:39:33 -0700153 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800154 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000155 "stringencode.cc",
156 "stringencode.h",
157 "stringutils.cc",
158 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700159 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700160 "systeminfo.cc",
161 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000162 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000163 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000164 "thread_checker.h",
165 "thread_checker_impl.cc",
166 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700167 "timestampaligner.cc",
168 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000169 "timeutils.cc",
170 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000171 "trace_event.h",
kwibergd3134032016-09-05 07:46:20 -0700172 "type_traits.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000173 ]
Noah Richards915590e2015-04-22 15:43:08 -0700174
aleloi16f55a12016-08-23 08:08:23 -0700175 if (is_android) {
176 libs += [ "log" ]
177 }
178
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200179 if (is_posix) {
180 sources += [ "file_posix.cc" ]
181 }
182
183 if (is_win) {
184 sources += [ "file_win.cc" ]
185 }
186
Peter Boström11e02292015-11-25 21:36:14 +0100187 if (build_with_chromium) {
188 # Dependency on chromium's logging (in //base).
189 deps += [ "//base:base" ]
190 sources += [
191 "../../webrtc_overrides/webrtc/base/logging.cc",
192 "../../webrtc_overrides/webrtc/base/logging.h",
193 ]
194 include_dirs = [ "../../webrtc_overrides" ]
195 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700196 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200197 "logging.cc",
198 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200199 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700200 ]
201 }
tommi09c60da2016-05-24 11:40:35 -0700202}
203
Per33b9c8f2016-07-15 08:25:42 +0200204config("enable_libevent_config") {
205 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
206}
207
ehmaldonado38a21322016-09-02 04:10:34 -0700208rtc_static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700209 public_deps = [
210 ":rtc_base_approved",
211 ]
tommi09c60da2016-05-24 11:40:35 -0700212
213 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700214 "sequenced_task_checker.h",
215 "sequenced_task_checker_impl.cc",
216 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700217 ]
tommic06b1332016-05-14 11:31:40 -0700218
perkj84bd5c72016-08-30 23:01:06 -0700219 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700220 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700221 "../../webrtc_overrides/webrtc/base/task_queue.cc",
222 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700223 ]
perkj84bd5c72016-08-30 23:01:06 -0700224 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700225 } else {
perkj84bd5c72016-08-30 23:01:06 -0700226 sources += [
227 "task_queue.h",
228 "task_queue_posix.h",
229 ]
230 if (rtc_build_libevent) {
231 deps = [
232 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700233 ]
234 }
perkj84bd5c72016-08-30 23:01:06 -0700235
236 if (rtc_enable_libevent) {
237 sources += [
238 "task_queue_libevent.cc",
239 "task_queue_posix.cc",
240 ]
241 all_dependent_configs = [ ":enable_libevent_config" ]
242 } else {
243 if (is_mac || is_ios) {
244 sources += [
245 "task_queue_gcd.cc",
246 "task_queue_posix.cc",
247 ]
248 }
249 if (is_win) {
250 sources += [ "task_queue_win.cc" ]
251 }
phoglundff274392016-05-17 03:44:28 -0700252 }
tommic06b1332016-05-14 11:31:40 -0700253 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000254}
255
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700256config("rtc_base_warnings_config") {
257 if (is_win && is_clang) {
258 cflags = [
259 # Disable warnings failing when compiling with Clang on Windows.
260 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
261 "-Wno-sign-compare",
262 "-Wno-missing-braces",
263 ]
264 }
265}
266
ehmaldonado38a21322016-09-02 04:10:34 -0700267rtc_static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000268 cflags = []
269 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000270 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700271 deps = [
272 "..:webrtc_common",
273 ]
Tommid44c0772016-03-11 17:12:32 -0800274 public_deps = [
275 ":rtc_base_approved",
276 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000277
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000278 configs += [
sdefresne0db3db92016-03-21 11:20:28 -0700279 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000280 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000281 ]
282
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000283 public_configs = [
sdefresne0db3db92016-03-21 11:20:28 -0700284 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000285 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286 ]
287
kjellanderb1f14062016-04-25 00:01:36 -0700288 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200289 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000290
291 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000292 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000293 "asyncfile.cc",
294 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700295 "asyncinvoker-inl.h",
296 "asyncinvoker.cc",
297 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000298 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000299 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000300 "asyncresolverinterface.cc",
301 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000302 "asyncsocket.cc",
303 "asyncsocket.h",
304 "asynctcpsocket.cc",
305 "asynctcpsocket.h",
306 "asyncudpsocket.cc",
307 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000308 "autodetectproxy.cc",
309 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000310 "base64.cc",
311 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000312 "common.cc",
313 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000314 "crc32.cc",
315 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000316 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000317 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000318 "diskcache.cc",
319 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700320 "filerotatingstream.cc",
321 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000322 "fileutils.cc",
323 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000324 "firewallsocketserver.cc",
325 "firewallsocketserver.h",
326 "flags.cc",
327 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000328 "gunit_prod.h",
329 "helpers.cc",
330 "helpers.h",
331 "httpbase.cc",
332 "httpbase.h",
333 "httpclient.cc",
334 "httpclient.h",
335 "httpcommon-inl.h",
336 "httpcommon.cc",
337 "httpcommon.h",
338 "httprequest.cc",
339 "httprequest.h",
magjed4e0581f2016-09-08 05:34:53 -0700340 "iosfilesystem.mm",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000341 "ipaddress.cc",
342 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000343 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000344 "messagedigest.cc",
345 "messagedigest.h",
346 "messagehandler.cc",
347 "messagehandler.h",
348 "messagequeue.cc",
349 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000350 "nethelpers.cc",
351 "nethelpers.h",
352 "network.cc",
353 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700354 "networkmonitor.cc",
355 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700356 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000357 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700358 "openssl.h",
359 "openssladapter.cc",
360 "openssladapter.h",
361 "openssldigest.cc",
362 "openssldigest.h",
363 "opensslidentity.cc",
364 "opensslidentity.h",
365 "opensslstreamadapter.cc",
366 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000367 "pathutils.cc",
368 "pathutils.h",
369 "physicalsocketserver.cc",
370 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000371 "proxydetect.cc",
372 "proxydetect.h",
373 "proxyinfo.cc",
374 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000375 "ratelimiter.cc",
376 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200377 "rtccertificate.cc",
378 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200379 "rtccertificategenerator.cc",
380 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000381 "sha1.cc",
382 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000383 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000384 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800385 "sharedexclusivelock.cc",
386 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000387 "signalthread.cc",
388 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000389 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000390 "sigslot.h",
391 "sigslotrepeater.h",
392 "socket.h",
393 "socketadapters.cc",
394 "socketadapters.h",
395 "socketaddress.cc",
396 "socketaddress.h",
397 "socketaddresspair.cc",
398 "socketaddresspair.h",
399 "socketfactory.h",
400 "socketpool.cc",
401 "socketpool.h",
402 "socketserver.h",
403 "socketstream.cc",
404 "socketstream.h",
405 "ssladapter.cc",
406 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000407 "sslfingerprint.cc",
408 "sslfingerprint.h",
409 "sslidentity.cc",
410 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000411 "sslsocketfactory.cc",
412 "sslsocketfactory.h",
413 "sslstreamadapter.cc",
414 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000415 "stream.cc",
416 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000417 "task.cc",
418 "task.h",
419 "taskparent.cc",
420 "taskparent.h",
421 "taskrunner.cc",
422 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000423 "thread.cc",
424 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000425 "timing.cc",
426 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000427 "urlencode.cc",
428 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000429 "worker.cc",
430 "worker.h",
431 ]
432
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700433 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
434 # compiler settings.
ehmaldonado38a21322016-09-02 04:10:34 -0700435 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700436 configs += [ "//build/config/compiler:no_chromium_code" ]
437 if (!is_win) {
438 cflags += [ "-Wno-uninitialized" ]
439 }
440
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000441 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000442 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700443 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000444 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000445
446 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700447 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000448 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000449 ]
450
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000451 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000452 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700453 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000454 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000455 "bandwidthsmoother.cc",
456 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000457 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000458 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000459 "httpserver.cc",
460 "httpserver.h",
461 "json.cc",
462 "json.h",
tkchin93411912015-07-22 12:12:17 -0700463 "logsinks.cc",
464 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000465 "mathutils.h",
466 "multipart.cc",
467 "multipart.h",
468 "natserver.cc",
469 "natserver.h",
470 "natsocketfactory.cc",
471 "natsocketfactory.h",
472 "nattypes.cc",
473 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000474 "optionsfile.cc",
475 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000476 "profiler.cc",
477 "profiler.h",
478 "proxyserver.cc",
479 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000480 "referencecountedsingletonfactory.h",
481 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200482 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000483 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000484 "sslconfig.h",
485 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700486 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000487 "testclient.cc",
488 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000489 "transformadapter.cc",
490 "transformadapter.h",
491 "versionparsing.cc",
492 "versionparsing.h",
493 "virtualsocketserver.cc",
494 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000495 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000496 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200497 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000498 ]
499
kjellandera8a7ef62016-04-05 08:13:31 -0700500 if (is_linux) {
501 sources += [
502 "dbus.cc",
503 "dbus.h",
504 "libdbusglibsymboltable.cc",
505 "libdbusglibsymboltable.h",
506 "linuxfdwalk.c",
507 "linuxfdwalk.h",
508 ]
509 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000510
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000511 if (is_posix) {
512 sources += [
513 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000514 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000515 "posix.cc",
516 "posix.h",
517 ]
518 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000519
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000520 if (is_mac) {
521 sources += [
522 "macasyncsocket.cc",
523 "macasyncsocket.h",
524 "maccocoasocketserver.h",
525 "maccocoasocketserver.mm",
526 "macsocketserver.cc",
527 "macsocketserver.h",
528 "macwindowpicker.cc",
529 "macwindowpicker.h",
530 ]
531 }
532
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000533 if (is_win) {
534 sources += [
535 "diskcache_win32.cc",
536 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000537 "win32regkey.cc",
538 "win32regkey.h",
539 "win32socketinit.cc",
540 "win32socketinit.h",
541 "win32socketserver.cc",
542 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000543 ]
544 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700545
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000546 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000547 deps += [ "//third_party/jsoncpp" ]
548 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700549 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000550
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000551 # When defined changes the include path for json.h to where it is
552 # expected to be when building json outside of the standalone build.
553 defines += [ "WEBRTC_EXTERNAL_JSON" ]
554 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000555 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000556
svaldez7f7a8192016-04-18 11:13:11 -0700557 if (rtc_build_ssl) {
558 deps += [ "//third_party/boringssl" ]
559 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700560 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000561 }
562
563 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000564 sources += [
565 "ifaddrs-android.cc",
566 "ifaddrs-android.h",
567 ]
568
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000569 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000570 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200571 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000572 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000573 }
574
kjellandera8a7ef62016-04-05 08:13:31 -0700575 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200576 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700577 "maccocoathreadhelper.h",
578 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200579 "macconversion.cc",
580 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700581 "macifaddrs_converter.cc",
582 "scoped_autorelease_pool.h",
583 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200584 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000585 }
586
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000587 if (use_x11) {
588 sources += [
589 "x11windowpicker.cc",
590 "x11windowpicker.h",
591 ]
592 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000593 "dl",
594 "rt",
595 "Xext",
596 "X11",
597 "Xcomposite",
598 "Xrender",
599 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000600 }
601
602 if (is_linux) {
603 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000604 "dl",
605 "rt",
606 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000607 }
608
609 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000610 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000611 "macutils.cc",
612 "macutils.h",
613 ]
kjellander3bcedd32016-06-08 01:14:15 -0700614 libs += [
615 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
616 "ApplicationServices.framework",
617
618 # For GetGestalt in macutils.cc.
619 "CoreServices.framework",
620 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000621 }
622
623 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000624 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000625 "win32.cc",
626 "win32.h",
627 "win32filesystem.cc",
628 "win32filesystem.h",
629 "win32securityerrors.cc",
630 "win32window.cc",
631 "win32window.h",
632 "win32windowpicker.cc",
633 "win32windowpicker.h",
634 "winfirewall.cc",
635 "winfirewall.h",
636 "winping.cc",
637 "winping.h",
638 ]
639
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000640 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000641 "crypt32.lib",
642 "iphlpapi.lib",
643 "secur32.lib",
644 ]
645
646 cflags += [
647 # Suppress warnings about WIN32_LEAN_AND_MEAN.
648 "/wd4005",
649 "/wd4703",
650 ]
651
652 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000653 }
654
kjellandera8a7ef62016-04-05 08:13:31 -0700655 if (is_posix) {
656 sources += [
657 "ifaddrs_converter.cc",
658 "ifaddrs_converter.h",
659 "unixfilesystem.cc",
660 "unixfilesystem.h",
661 ]
662 if (is_debug) {
663 # The Chromium build/common.gypi defines this for all posix
664 # _except_ for ios & mac. We want it there as well, e.g.
665 # because ASSERT and friends trigger off of it.
666 defines += [ "_DEBUG" ]
667 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000668 }
669
magjed4e0581f2016-09-08 05:34:53 -0700670 if (is_ios || (is_mac && current_cpu != "x86")) {
671 defines += [ "CARBON_DEPRECATED=YES" ]
672 }
673
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000674 if (is_linux || is_android) {
675 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000676 "linux.cc",
677 "linux.h",
678 ]
679 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700680
681 if (is_nacl) {
682 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
683 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800684 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700685 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700686 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700687 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700688 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700689 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000690}
tkchin42f580e2015-11-26 23:18:23 -0800691
ehmaldonado38a21322016-09-02 04:10:34 -0700692rtc_source_set("gtest_prod") {
kjellander988d31e2016-02-05 00:23:50 -0800693 sources = [
694 "gtest_prod_util.h",
695 ]
696}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200697
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200698if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700699 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200700 defines = [ "GTEST_RELATIVE_PATH" ]
701 }
702
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700703 config("rtc_base_tests_utils_warnings_config") {
704 if (is_win && is_clang) {
705 cflags = [
706 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
707 "-Wno-reorder",
708 "-Wno-sign-compare",
709 ]
710 }
711 }
712
ehmaldonado38a21322016-09-02 04:10:34 -0700713 rtc_source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200714 testonly = true
715 sources = [
716 # Also use this as a convenient dumping ground for misc files that are
717 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700718 "fakeclock.cc",
719 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200720 "fakenetwork.h",
721 "fakesslidentity.h",
722 "faketaskrunner.h",
723 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700724 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200725 "testbase64.h",
726 "testechoserver.h",
727 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700728 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200729 "unittest_main.cc",
730 ]
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700731 configs += [ ":rtc_base_tests_utils_warnings_config" ]
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700732 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200733 deps = [
734 ":rtc_base",
735 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200736 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200737 ]
738 public_deps = [
739 "//testing/gtest",
740 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700741
742 if (is_clang) {
743 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700744 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700745 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200746 }
747}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200748
749if (is_android) {
750 android_library("base_java") {
751 java_files = [
752 "java/src/org/webrtc/Logging.java",
753 "java/src/org/webrtc/Size.java",
754 "java/src/org/webrtc/ThreadUtils.java",
755 ]
756
757 deps = [
758 "//base:base_java",
759 ]
760 }
761}