blob: 72564148a7984e7f8a2bf575ee712e75e6c37384 [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 defines = [
26 "FEATURE_ENABLE_SSL",
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000027 "LOGGING=1",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000028 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000029}
30
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000031config("rtc_base_chromium_config") {
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020032 defines = [ "NO_MAIN_THREAD_WRAPPING" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000033}
34
35config("openssl_config") {
36 defines = [
37 "SSL_USE_OPENSSL",
38 "HAVE_OPENSSL_SSL_H",
39 ]
40}
41
kjellanderb1f14062016-04-25 00:01:36 -070042config("rtc_base_all_dependent_config") {
43 if (is_ios) {
44 libs = [
45 "CFNetwork.framework",
Zeke Chin2d3b7e22015-07-14 12:55:44 -070046
kjellanderb1f14062016-04-25 00:01:36 -070047 #"Foundation.framework", # Already in //build/config:default_libs.
48 "Security.framework",
49 "SystemConfiguration.framework",
kjellander3bcedd32016-06-08 01:14:15 -070050 "UIKit.framework",
kjellanderb1f14062016-04-25 00:01:36 -070051 ]
52 }
53 if (is_mac) {
54 libs = [
55 "Cocoa.framework",
56 "Foundation.framework",
57 "IOKit.framework",
58 "Security.framework",
59 "SystemConfiguration.framework",
60 ]
kjellanderb1f14062016-04-25 00:01:36 -070061 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000062}
63
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000064if (is_linux && !build_with_chromium) {
65 # Provides the same functionality as the //crypto:platform target, which
66 # WebRTC cannot use as we don't sync src/crypto from Chromium.
67 group("linux_system_ssl") {
svaldez7f7a8192016-04-18 11:13:11 -070068 deps = [
69 "//third_party/boringssl",
70 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000071 }
72}
73
kjellanderec5c9062016-08-19 01:07:30 -070074if (!rtc_build_ssl) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000075 config("external_ssl_library") {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000076 assert(rtc_ssl_root != "",
77 "You must specify rtc_ssl_root when rtc_build_ssl==0.")
78 include_dirs = [ rtc_ssl_root ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000079 }
80}
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000081
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000082# The subset of rtc_base approved for use outside of libjingle.
ehmaldonado38a21322016-09-02 04:10:34 -070083rtc_static_library("rtc_base_approved") {
tommic06b1332016-05-14 11:31:40 -070084 defines = []
aleloi16f55a12016-08-23 08:08:23 -070085 libs = []
Peter Boström11e02292015-11-25 21:36:14 +010086 deps = []
kjellander84ba8b62016-04-24 23:03:07 -070087 all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ]
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000088
89 sources = [
Karl Wiberge2a83ee2015-10-26 19:51:29 +010090 "array_view.h",
maxmorinec623742016-09-15 05:11:55 -070091 "arraysize.h",
Peter Boströmff019b02015-04-30 14:16:07 +020092 "atomicops.h",
Tommicc4fdde2016-04-22 19:34:59 +020093 "bind.h",
Noah Richards915590e2015-04-22 15:43:08 -070094 "bitbuffer.cc",
95 "bitbuffer.h",
Karl Wiberg94784372015-04-20 14:03:07 +020096 "buffer.h",
Joachim Bauch6f2ef742015-05-21 17:52:01 +020097 "bufferqueue.cc",
98 "bufferqueue.h",
Noah Richards915590e2015-04-22 15:43:08 -070099 "bytebuffer.cc",
100 "bytebuffer.h",
101 "byteorder.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000102 "checks.cc",
103 "checks.h",
Peter Boströmfd5dae32015-11-26 12:54:24 +0100104 "constructormagic.h",
tommiebfbab52016-03-19 11:36:18 -0700105 "copyonwritebuffer.cc",
106 "copyonwritebuffer.h",
Tommi494f2092015-04-27 17:39:23 +0200107 "criticalsection.cc",
108 "criticalsection.h",
kwiberg45fd9fe2015-12-16 01:09:16 -0800109 "deprecation.h",
tommi@webrtc.org4c0fd962015-02-09 10:23:27 +0000110 "event.cc",
111 "event.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000112 "event_tracer.cc",
113 "event_tracer.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000114 "exp_filter.cc",
115 "exp_filter.h",
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200116 "file.cc",
117 "file.h",
ivoc48052312016-08-25 04:43:45 -0700118 "format_macros.h",
kwiberg24c7c122016-09-28 11:57:10 -0700119 "function_view.h",
kwiberg77eab702016-09-28 17:42:01 -0700120 "ignore_wundef.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700121 "location.cc",
122 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000123 "md5.cc",
124 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000125 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000126 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700127 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700128 "onetimeevent.h",
kwiberg2b11fd22016-09-09 03:35:24 -0700129 "optional.cc",
Karl Wibergbe579832015-11-10 22:34:18 +0100130 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000131 "platform_file.cc",
132 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200133 "platform_thread.cc",
134 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800135 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200136 "race_checker.cc",
137 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800138 "random.cc",
139 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700140 "rate_limiter.cc",
141 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800142 "rate_statistics.cc",
143 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700144 "ratetracker.cc",
145 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800146 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800147 "safe_conversions.h",
148 "safe_conversions_impl.h",
kwibergac554ee2016-09-02 00:39:33 -0700149 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800150 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000151 "stringencode.cc",
152 "stringencode.h",
153 "stringutils.cc",
154 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700155 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700156 "systeminfo.cc",
157 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000158 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000159 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000160 "thread_checker.h",
161 "thread_checker_impl.cc",
162 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700163 "timestampaligner.cc",
164 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000165 "timeutils.cc",
166 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000167 "trace_event.h",
kwibergd3134032016-09-05 07:46:20 -0700168 "type_traits.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000169 ]
Noah Richards915590e2015-04-22 15:43:08 -0700170
aleloi16f55a12016-08-23 08:08:23 -0700171 if (is_android) {
172 libs += [ "log" ]
173 }
174
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200175 if (is_posix) {
176 sources += [ "file_posix.cc" ]
177 }
178
179 if (is_win) {
180 sources += [ "file_win.cc" ]
181 }
182
Peter Boström11e02292015-11-25 21:36:14 +0100183 if (build_with_chromium) {
184 # Dependency on chromium's logging (in //base).
185 deps += [ "//base:base" ]
186 sources += [
187 "../../webrtc_overrides/webrtc/base/logging.cc",
188 "../../webrtc_overrides/webrtc/base/logging.h",
189 ]
190 include_dirs = [ "../../webrtc_overrides" ]
191 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700192 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200193 "logging.cc",
194 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200195 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700196 ]
197 }
tommi09c60da2016-05-24 11:40:35 -0700198}
199
Per33b9c8f2016-07-15 08:25:42 +0200200config("enable_libevent_config") {
201 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
202}
203
ehmaldonado38a21322016-09-02 04:10:34 -0700204rtc_static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700205 public_deps = [
206 ":rtc_base_approved",
207 ]
tommi09c60da2016-05-24 11:40:35 -0700208
209 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700210 "sequenced_task_checker.h",
211 "sequenced_task_checker_impl.cc",
212 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700213 ]
tommic06b1332016-05-14 11:31:40 -0700214
perkj84bd5c72016-08-30 23:01:06 -0700215 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700216 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700217 "../../webrtc_overrides/webrtc/base/task_queue.cc",
218 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700219 ]
perkj84bd5c72016-08-30 23:01:06 -0700220 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700221 } else {
perkj84bd5c72016-08-30 23:01:06 -0700222 sources += [
223 "task_queue.h",
224 "task_queue_posix.h",
225 ]
226 if (rtc_build_libevent) {
227 deps = [
228 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700229 ]
230 }
perkj84bd5c72016-08-30 23:01:06 -0700231
232 if (rtc_enable_libevent) {
233 sources += [
234 "task_queue_libevent.cc",
235 "task_queue_posix.cc",
236 ]
237 all_dependent_configs = [ ":enable_libevent_config" ]
238 } else {
239 if (is_mac || is_ios) {
240 sources += [
241 "task_queue_gcd.cc",
242 "task_queue_posix.cc",
243 ]
244 }
245 if (is_win) {
246 sources += [ "task_queue_win.cc" ]
247 }
phoglundff274392016-05-17 03:44:28 -0700248 }
tommic06b1332016-05-14 11:31:40 -0700249 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000250}
251
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700252config("rtc_base_warnings_config") {
253 if (is_win && is_clang) {
254 cflags = [
255 # Disable warnings failing when compiling with Clang on Windows.
256 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
257 "-Wno-sign-compare",
258 "-Wno-missing-braces",
259 ]
260 }
261}
262
ehmaldonado38a21322016-09-02 04:10:34 -0700263rtc_static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000264 cflags = []
265 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000266 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700267 deps = [
268 "..:webrtc_common",
269 ]
Tommid44c0772016-03-11 17:12:32 -0800270 public_deps = [
271 ":rtc_base_approved",
272 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000273
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000274 configs += [
sdefresne0db3db92016-03-21 11:20:28 -0700275 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000276 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000277 ]
278
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000279 public_configs = [
sdefresne0db3db92016-03-21 11:20:28 -0700280 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000281 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000282 ]
283
kjellanderb1f14062016-04-25 00:01:36 -0700284 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200285 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286
287 sources = [
kthelgasond5472242016-09-09 03:19:48 -0700288 "applefilesystem.mm",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000289 "asyncfile.cc",
290 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700291 "asyncinvoker-inl.h",
292 "asyncinvoker.cc",
293 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000294 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000295 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000296 "asyncresolverinterface.cc",
297 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000298 "asyncsocket.cc",
299 "asyncsocket.h",
300 "asynctcpsocket.cc",
301 "asynctcpsocket.h",
302 "asyncudpsocket.cc",
303 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000304 "autodetectproxy.cc",
305 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000306 "base64.cc",
307 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000308 "common.cc",
309 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000310 "crc32.cc",
311 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000312 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000314 "diskcache.cc",
315 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700316 "filerotatingstream.cc",
317 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000318 "fileutils.cc",
319 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000320 "firewallsocketserver.cc",
321 "firewallsocketserver.h",
322 "flags.cc",
323 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000324 "gunit_prod.h",
325 "helpers.cc",
326 "helpers.h",
327 "httpbase.cc",
328 "httpbase.h",
329 "httpclient.cc",
330 "httpclient.h",
331 "httpcommon-inl.h",
332 "httpcommon.cc",
333 "httpcommon.h",
334 "httprequest.cc",
335 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000336 "ipaddress.cc",
337 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000338 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000339 "messagedigest.cc",
340 "messagedigest.h",
341 "messagehandler.cc",
342 "messagehandler.h",
343 "messagequeue.cc",
344 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000345 "nethelpers.cc",
346 "nethelpers.h",
347 "network.cc",
348 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700349 "networkmonitor.cc",
350 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700351 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000352 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700353 "openssl.h",
354 "openssladapter.cc",
355 "openssladapter.h",
356 "openssldigest.cc",
357 "openssldigest.h",
358 "opensslidentity.cc",
359 "opensslidentity.h",
360 "opensslstreamadapter.cc",
361 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000362 "pathutils.cc",
363 "pathutils.h",
364 "physicalsocketserver.cc",
365 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000366 "proxydetect.cc",
367 "proxydetect.h",
368 "proxyinfo.cc",
369 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000370 "ratelimiter.cc",
371 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200372 "rtccertificate.cc",
373 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200374 "rtccertificategenerator.cc",
375 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000376 "sha1.cc",
377 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000378 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000379 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800380 "sharedexclusivelock.cc",
381 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000382 "signalthread.cc",
383 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000384 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000385 "sigslot.h",
386 "sigslotrepeater.h",
387 "socket.h",
388 "socketadapters.cc",
389 "socketadapters.h",
390 "socketaddress.cc",
391 "socketaddress.h",
392 "socketaddresspair.cc",
393 "socketaddresspair.h",
394 "socketfactory.h",
395 "socketpool.cc",
396 "socketpool.h",
397 "socketserver.h",
398 "socketstream.cc",
399 "socketstream.h",
400 "ssladapter.cc",
401 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000402 "sslfingerprint.cc",
403 "sslfingerprint.h",
404 "sslidentity.cc",
405 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000406 "sslsocketfactory.cc",
407 "sslsocketfactory.h",
408 "sslstreamadapter.cc",
409 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000410 "stream.cc",
411 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000412 "task.cc",
413 "task.h",
414 "taskparent.cc",
415 "taskparent.h",
416 "taskrunner.cc",
417 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000418 "thread.cc",
419 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000420 "urlencode.cc",
421 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000422 "worker.cc",
423 "worker.h",
424 ]
425
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700426 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
427 # compiler settings.
ehmaldonado38a21322016-09-02 04:10:34 -0700428 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700429 configs += [ "//build/config/compiler:no_chromium_code" ]
430 if (!is_win) {
431 cflags += [ "-Wno-uninitialized" ]
432 }
433
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000434 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000435 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700436 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000437 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000438
439 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700440 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000441 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000442 ]
443
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000444 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000445 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700446 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000447 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000448 "bandwidthsmoother.cc",
449 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000450 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000451 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000452 "httpserver.cc",
453 "httpserver.h",
454 "json.cc",
455 "json.h",
tkchin93411912015-07-22 12:12:17 -0700456 "logsinks.cc",
457 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000458 "mathutils.h",
459 "multipart.cc",
460 "multipart.h",
461 "natserver.cc",
462 "natserver.h",
463 "natsocketfactory.cc",
464 "natsocketfactory.h",
465 "nattypes.cc",
466 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000467 "optionsfile.cc",
468 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000469 "profiler.cc",
470 "profiler.h",
471 "proxyserver.cc",
472 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000473 "referencecountedsingletonfactory.h",
474 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200475 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000476 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000477 "sslconfig.h",
478 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700479 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000480 "testclient.cc",
481 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000482 "transformadapter.cc",
483 "transformadapter.h",
484 "versionparsing.cc",
485 "versionparsing.h",
486 "virtualsocketserver.cc",
487 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000488 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000489 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200490 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000491 ]
492
kjellandera8a7ef62016-04-05 08:13:31 -0700493 if (is_linux) {
494 sources += [
495 "dbus.cc",
496 "dbus.h",
497 "libdbusglibsymboltable.cc",
498 "libdbusglibsymboltable.h",
499 "linuxfdwalk.c",
500 "linuxfdwalk.h",
501 ]
502 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000503
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000504 if (is_posix) {
505 sources += [
506 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000507 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000508 "posix.cc",
509 "posix.h",
510 ]
511 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000512
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000513 if (is_mac) {
514 sources += [
515 "macasyncsocket.cc",
516 "macasyncsocket.h",
517 "maccocoasocketserver.h",
518 "maccocoasocketserver.mm",
519 "macsocketserver.cc",
520 "macsocketserver.h",
521 "macwindowpicker.cc",
522 "macwindowpicker.h",
523 ]
524 }
525
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000526 if (is_win) {
527 sources += [
528 "diskcache_win32.cc",
529 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000530 "win32regkey.cc",
531 "win32regkey.h",
532 "win32socketinit.cc",
533 "win32socketinit.h",
534 "win32socketserver.cc",
535 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000536 ]
537 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700538
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000539 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000540 deps += [ "//third_party/jsoncpp" ]
541 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700542 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000543
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000544 # When defined changes the include path for json.h to where it is
545 # expected to be when building json outside of the standalone build.
546 defines += [ "WEBRTC_EXTERNAL_JSON" ]
547 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000548 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000549
svaldez7f7a8192016-04-18 11:13:11 -0700550 if (rtc_build_ssl) {
551 deps += [ "//third_party/boringssl" ]
552 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700553 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000554 }
555
556 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000557 sources += [
558 "ifaddrs-android.cc",
559 "ifaddrs-android.h",
560 ]
561
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000562 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000563 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200564 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000565 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000566 }
567
kjellandera8a7ef62016-04-05 08:13:31 -0700568 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200569 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700570 "maccocoathreadhelper.h",
571 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200572 "macconversion.cc",
573 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700574 "macifaddrs_converter.cc",
575 "scoped_autorelease_pool.h",
576 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200577 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000578 }
579
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000580 if (use_x11) {
581 sources += [
582 "x11windowpicker.cc",
583 "x11windowpicker.h",
584 ]
585 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000586 "dl",
587 "rt",
588 "Xext",
589 "X11",
590 "Xcomposite",
591 "Xrender",
592 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000593 }
594
595 if (is_linux) {
596 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000597 "dl",
598 "rt",
599 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000600 }
601
602 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000603 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000604 "macutils.cc",
605 "macutils.h",
606 ]
kjellander3bcedd32016-06-08 01:14:15 -0700607 libs += [
608 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
609 "ApplicationServices.framework",
610
611 # For GetGestalt in macutils.cc.
612 "CoreServices.framework",
613 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000614 }
615
616 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000617 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000618 "win32.cc",
619 "win32.h",
620 "win32filesystem.cc",
621 "win32filesystem.h",
622 "win32securityerrors.cc",
623 "win32window.cc",
624 "win32window.h",
625 "win32windowpicker.cc",
626 "win32windowpicker.h",
627 "winfirewall.cc",
628 "winfirewall.h",
629 "winping.cc",
630 "winping.h",
631 ]
632
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000633 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000634 "crypt32.lib",
635 "iphlpapi.lib",
636 "secur32.lib",
637 ]
638
639 cflags += [
640 # Suppress warnings about WIN32_LEAN_AND_MEAN.
641 "/wd4005",
642 "/wd4703",
643 ]
644
645 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000646 }
647
kjellandera8a7ef62016-04-05 08:13:31 -0700648 if (is_posix) {
649 sources += [
650 "ifaddrs_converter.cc",
651 "ifaddrs_converter.h",
652 "unixfilesystem.cc",
653 "unixfilesystem.h",
654 ]
655 if (is_debug) {
656 # The Chromium build/common.gypi defines this for all posix
657 # _except_ for ios & mac. We want it there as well, e.g.
658 # because ASSERT and friends trigger off of it.
659 defines += [ "_DEBUG" ]
660 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000661 }
662
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000663 if (is_linux || is_android) {
664 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000665 "linux.cc",
666 "linux.h",
667 ]
668 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700669
670 if (is_nacl) {
671 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
672 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800673 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700674 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700675 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700676 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700677 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700678 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000679}
tkchin42f580e2015-11-26 23:18:23 -0800680
ehmaldonado38a21322016-09-02 04:10:34 -0700681rtc_source_set("gtest_prod") {
kjellander988d31e2016-02-05 00:23:50 -0800682 sources = [
683 "gtest_prod_util.h",
684 ]
685}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200686
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200687if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700688 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200689 defines = [ "GTEST_RELATIVE_PATH" ]
690 }
691
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700692 config("rtc_base_tests_utils_warnings_config") {
693 if (is_win && is_clang) {
694 cflags = [
695 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
696 "-Wno-reorder",
697 "-Wno-sign-compare",
698 ]
699 }
700 }
701
ehmaldonado38a21322016-09-02 04:10:34 -0700702 rtc_source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200703 testonly = true
704 sources = [
705 # Also use this as a convenient dumping ground for misc files that are
706 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700707 "fakeclock.cc",
708 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200709 "fakenetwork.h",
710 "fakesslidentity.h",
711 "faketaskrunner.h",
712 "gunit.h",
713 "testbase64.h",
714 "testechoserver.h",
715 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700716 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200717 "unittest_main.cc",
718 ]
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700719 configs += [ ":rtc_base_tests_utils_warnings_config" ]
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700720 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200721 deps = [
722 ":rtc_base",
723 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200724 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200725 ]
726 public_deps = [
727 "//testing/gtest",
728 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700729
730 if (is_clang) {
731 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700732 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700733 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200734 }
735}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200736
737if (is_android) {
738 android_library("base_java") {
739 java_files = [
740 "java/src/org/webrtc/Logging.java",
741 "java/src/org/webrtc/Size.java",
742 "java/src/org/webrtc/ThreadUtils.java",
743 ]
744
745 deps = [
746 "//base:base_java",
747 ]
748 }
749}