blob: f5dd4df9d6d4e27baa000196fa78a81ee554053c [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",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700120 "location.cc",
121 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000122 "md5.cc",
123 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000124 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000125 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700126 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700127 "onetimeevent.h",
kwiberg2b11fd22016-09-09 03:35:24 -0700128 "optional.cc",
Karl Wibergbe579832015-11-10 22:34:18 +0100129 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000130 "platform_file.cc",
131 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200132 "platform_thread.cc",
133 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800134 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200135 "race_checker.cc",
136 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800137 "random.cc",
138 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700139 "rate_limiter.cc",
140 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800141 "rate_statistics.cc",
142 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700143 "ratetracker.cc",
144 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800145 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800146 "safe_conversions.h",
147 "safe_conversions_impl.h",
kwibergac554ee2016-09-02 00:39:33 -0700148 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800149 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000150 "stringencode.cc",
151 "stringencode.h",
152 "stringutils.cc",
153 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700154 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700155 "systeminfo.cc",
156 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000157 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000158 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000159 "thread_checker.h",
160 "thread_checker_impl.cc",
161 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700162 "timestampaligner.cc",
163 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000164 "timeutils.cc",
165 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000166 "trace_event.h",
kwibergd3134032016-09-05 07:46:20 -0700167 "type_traits.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000168 ]
Noah Richards915590e2015-04-22 15:43:08 -0700169
aleloi16f55a12016-08-23 08:08:23 -0700170 if (is_android) {
171 libs += [ "log" ]
172 }
173
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200174 if (is_posix) {
175 sources += [ "file_posix.cc" ]
176 }
177
178 if (is_win) {
179 sources += [ "file_win.cc" ]
180 }
181
Peter Boström11e02292015-11-25 21:36:14 +0100182 if (build_with_chromium) {
183 # Dependency on chromium's logging (in //base).
184 deps += [ "//base:base" ]
185 sources += [
186 "../../webrtc_overrides/webrtc/base/logging.cc",
187 "../../webrtc_overrides/webrtc/base/logging.h",
188 ]
189 include_dirs = [ "../../webrtc_overrides" ]
190 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700191 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200192 "logging.cc",
193 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200194 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700195 ]
196 }
tommi09c60da2016-05-24 11:40:35 -0700197}
198
Per33b9c8f2016-07-15 08:25:42 +0200199config("enable_libevent_config") {
200 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
201}
202
ehmaldonado38a21322016-09-02 04:10:34 -0700203rtc_static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700204 public_deps = [
205 ":rtc_base_approved",
206 ]
tommi09c60da2016-05-24 11:40:35 -0700207
208 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700209 "sequenced_task_checker.h",
210 "sequenced_task_checker_impl.cc",
211 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700212 ]
tommic06b1332016-05-14 11:31:40 -0700213
perkj84bd5c72016-08-30 23:01:06 -0700214 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700215 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700216 "../../webrtc_overrides/webrtc/base/task_queue.cc",
217 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700218 ]
perkj84bd5c72016-08-30 23:01:06 -0700219 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700220 } else {
perkj84bd5c72016-08-30 23:01:06 -0700221 sources += [
222 "task_queue.h",
223 "task_queue_posix.h",
224 ]
225 if (rtc_build_libevent) {
226 deps = [
227 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700228 ]
229 }
perkj84bd5c72016-08-30 23:01:06 -0700230
231 if (rtc_enable_libevent) {
232 sources += [
233 "task_queue_libevent.cc",
234 "task_queue_posix.cc",
235 ]
236 all_dependent_configs = [ ":enable_libevent_config" ]
237 } else {
238 if (is_mac || is_ios) {
239 sources += [
240 "task_queue_gcd.cc",
241 "task_queue_posix.cc",
242 ]
243 }
244 if (is_win) {
245 sources += [ "task_queue_win.cc" ]
246 }
phoglundff274392016-05-17 03:44:28 -0700247 }
tommic06b1332016-05-14 11:31:40 -0700248 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000249}
250
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700251config("rtc_base_warnings_config") {
252 if (is_win && is_clang) {
253 cflags = [
254 # Disable warnings failing when compiling with Clang on Windows.
255 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
256 "-Wno-sign-compare",
257 "-Wno-missing-braces",
258 ]
259 }
260}
261
ehmaldonado38a21322016-09-02 04:10:34 -0700262rtc_static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000263 cflags = []
264 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000265 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700266 deps = [
267 "..:webrtc_common",
268 ]
Tommid44c0772016-03-11 17:12:32 -0800269 public_deps = [
270 ":rtc_base_approved",
271 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000272
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000273 configs += [
sdefresne0db3db92016-03-21 11:20:28 -0700274 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000275 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000276 ]
277
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000278 public_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
kjellanderb1f14062016-04-25 00:01:36 -0700283 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200284 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000285
286 sources = [
kthelgasond5472242016-09-09 03:19:48 -0700287 "applefilesystem.mm",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000288 "asyncfile.cc",
289 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700290 "asyncinvoker-inl.h",
291 "asyncinvoker.cc",
292 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000293 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000294 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000295 "asyncresolverinterface.cc",
296 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000297 "asyncsocket.cc",
298 "asyncsocket.h",
299 "asynctcpsocket.cc",
300 "asynctcpsocket.h",
301 "asyncudpsocket.cc",
302 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000303 "autodetectproxy.cc",
304 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000305 "base64.cc",
306 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000307 "common.cc",
308 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000309 "crc32.cc",
310 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000311 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000312 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "diskcache.cc",
314 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700315 "filerotatingstream.cc",
316 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000317 "fileutils.cc",
318 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000319 "firewallsocketserver.cc",
320 "firewallsocketserver.h",
321 "flags.cc",
322 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000323 "gunit_prod.h",
324 "helpers.cc",
325 "helpers.h",
326 "httpbase.cc",
327 "httpbase.h",
328 "httpclient.cc",
329 "httpclient.h",
330 "httpcommon-inl.h",
331 "httpcommon.cc",
332 "httpcommon.h",
333 "httprequest.cc",
334 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000335 "ipaddress.cc",
336 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000337 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000338 "messagedigest.cc",
339 "messagedigest.h",
340 "messagehandler.cc",
341 "messagehandler.h",
342 "messagequeue.cc",
343 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000344 "nethelpers.cc",
345 "nethelpers.h",
346 "network.cc",
347 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700348 "networkmonitor.cc",
349 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700350 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000351 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700352 "openssl.h",
353 "openssladapter.cc",
354 "openssladapter.h",
355 "openssldigest.cc",
356 "openssldigest.h",
357 "opensslidentity.cc",
358 "opensslidentity.h",
359 "opensslstreamadapter.cc",
360 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000361 "pathutils.cc",
362 "pathutils.h",
363 "physicalsocketserver.cc",
364 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000365 "proxydetect.cc",
366 "proxydetect.h",
367 "proxyinfo.cc",
368 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000369 "ratelimiter.cc",
370 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200371 "rtccertificate.cc",
372 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200373 "rtccertificategenerator.cc",
374 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000375 "sha1.cc",
376 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000377 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000378 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800379 "sharedexclusivelock.cc",
380 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000381 "signalthread.cc",
382 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000383 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000384 "sigslot.h",
385 "sigslotrepeater.h",
386 "socket.h",
387 "socketadapters.cc",
388 "socketadapters.h",
389 "socketaddress.cc",
390 "socketaddress.h",
391 "socketaddresspair.cc",
392 "socketaddresspair.h",
393 "socketfactory.h",
394 "socketpool.cc",
395 "socketpool.h",
396 "socketserver.h",
397 "socketstream.cc",
398 "socketstream.h",
399 "ssladapter.cc",
400 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000401 "sslfingerprint.cc",
402 "sslfingerprint.h",
403 "sslidentity.cc",
404 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000405 "sslsocketfactory.cc",
406 "sslsocketfactory.h",
407 "sslstreamadapter.cc",
408 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000409 "stream.cc",
410 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000411 "task.cc",
412 "task.h",
413 "taskparent.cc",
414 "taskparent.h",
415 "taskrunner.cc",
416 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000417 "thread.cc",
418 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000419 "urlencode.cc",
420 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000421 "worker.cc",
422 "worker.h",
423 ]
424
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700425 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
426 # compiler settings.
ehmaldonado38a21322016-09-02 04:10:34 -0700427 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700428 configs += [ "//build/config/compiler:no_chromium_code" ]
429 if (!is_win) {
430 cflags += [ "-Wno-uninitialized" ]
431 }
432
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000433 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000434 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700435 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000436 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000437
438 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700439 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000440 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000441 ]
442
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000443 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000444 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700445 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000446 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000447 "bandwidthsmoother.cc",
448 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000449 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000450 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000451 "httpserver.cc",
452 "httpserver.h",
453 "json.cc",
454 "json.h",
tkchin93411912015-07-22 12:12:17 -0700455 "logsinks.cc",
456 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000457 "mathutils.h",
458 "multipart.cc",
459 "multipart.h",
460 "natserver.cc",
461 "natserver.h",
462 "natsocketfactory.cc",
463 "natsocketfactory.h",
464 "nattypes.cc",
465 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000466 "optionsfile.cc",
467 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000468 "profiler.cc",
469 "profiler.h",
470 "proxyserver.cc",
471 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000472 "referencecountedsingletonfactory.h",
473 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200474 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000475 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000476 "sslconfig.h",
477 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700478 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000479 "testclient.cc",
480 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000481 "transformadapter.cc",
482 "transformadapter.h",
483 "versionparsing.cc",
484 "versionparsing.h",
485 "virtualsocketserver.cc",
486 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000487 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000488 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200489 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000490 ]
491
kjellandera8a7ef62016-04-05 08:13:31 -0700492 if (is_linux) {
493 sources += [
494 "dbus.cc",
495 "dbus.h",
496 "libdbusglibsymboltable.cc",
497 "libdbusglibsymboltable.h",
498 "linuxfdwalk.c",
499 "linuxfdwalk.h",
500 ]
501 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000502
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000503 if (is_posix) {
504 sources += [
505 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000506 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000507 "posix.cc",
508 "posix.h",
509 ]
510 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000511
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000512 if (is_mac) {
513 sources += [
514 "macasyncsocket.cc",
515 "macasyncsocket.h",
516 "maccocoasocketserver.h",
517 "maccocoasocketserver.mm",
518 "macsocketserver.cc",
519 "macsocketserver.h",
520 "macwindowpicker.cc",
521 "macwindowpicker.h",
522 ]
523 }
524
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000525 if (is_win) {
526 sources += [
527 "diskcache_win32.cc",
528 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000529 "win32regkey.cc",
530 "win32regkey.h",
531 "win32socketinit.cc",
532 "win32socketinit.h",
533 "win32socketserver.cc",
534 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000535 ]
536 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700537
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000538 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000539 deps += [ "//third_party/jsoncpp" ]
540 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700541 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000542
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000543 # When defined changes the include path for json.h to where it is
544 # expected to be when building json outside of the standalone build.
545 defines += [ "WEBRTC_EXTERNAL_JSON" ]
546 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000547 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000548
svaldez7f7a8192016-04-18 11:13:11 -0700549 if (rtc_build_ssl) {
550 deps += [ "//third_party/boringssl" ]
551 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700552 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000553 }
554
555 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000556 sources += [
557 "ifaddrs-android.cc",
558 "ifaddrs-android.h",
559 ]
560
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000561 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000562 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200563 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000564 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000565 }
566
kjellandera8a7ef62016-04-05 08:13:31 -0700567 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200568 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700569 "maccocoathreadhelper.h",
570 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200571 "macconversion.cc",
572 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700573 "macifaddrs_converter.cc",
574 "scoped_autorelease_pool.h",
575 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200576 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000577 }
578
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000579 if (use_x11) {
580 sources += [
581 "x11windowpicker.cc",
582 "x11windowpicker.h",
583 ]
584 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000585 "dl",
586 "rt",
587 "Xext",
588 "X11",
589 "Xcomposite",
590 "Xrender",
591 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000592 }
593
594 if (is_linux) {
595 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000596 "dl",
597 "rt",
598 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000599 }
600
601 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000602 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000603 "macutils.cc",
604 "macutils.h",
605 ]
kjellander3bcedd32016-06-08 01:14:15 -0700606 libs += [
607 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
608 "ApplicationServices.framework",
609
610 # For GetGestalt in macutils.cc.
611 "CoreServices.framework",
612 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000613 }
614
615 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000616 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000617 "win32.cc",
618 "win32.h",
619 "win32filesystem.cc",
620 "win32filesystem.h",
621 "win32securityerrors.cc",
622 "win32window.cc",
623 "win32window.h",
624 "win32windowpicker.cc",
625 "win32windowpicker.h",
626 "winfirewall.cc",
627 "winfirewall.h",
628 "winping.cc",
629 "winping.h",
630 ]
631
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000632 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000633 "crypt32.lib",
634 "iphlpapi.lib",
635 "secur32.lib",
636 ]
637
638 cflags += [
639 # Suppress warnings about WIN32_LEAN_AND_MEAN.
640 "/wd4005",
641 "/wd4703",
642 ]
643
644 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000645 }
646
kjellandera8a7ef62016-04-05 08:13:31 -0700647 if (is_posix) {
648 sources += [
649 "ifaddrs_converter.cc",
650 "ifaddrs_converter.h",
651 "unixfilesystem.cc",
652 "unixfilesystem.h",
653 ]
654 if (is_debug) {
655 # The Chromium build/common.gypi defines this for all posix
656 # _except_ for ios & mac. We want it there as well, e.g.
657 # because ASSERT and friends trigger off of it.
658 defines += [ "_DEBUG" ]
659 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000660 }
661
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000662 if (is_linux || is_android) {
663 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000664 "linux.cc",
665 "linux.h",
666 ]
667 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700668
669 if (is_nacl) {
670 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
671 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800672 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700673 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700674 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700675 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700676 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700677 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000678}
tkchin42f580e2015-11-26 23:18:23 -0800679
ehmaldonado38a21322016-09-02 04:10:34 -0700680rtc_source_set("gtest_prod") {
kjellander988d31e2016-02-05 00:23:50 -0800681 sources = [
682 "gtest_prod_util.h",
683 ]
684}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200685
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200686if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700687 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200688 defines = [ "GTEST_RELATIVE_PATH" ]
689 }
690
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700691 config("rtc_base_tests_utils_warnings_config") {
692 if (is_win && is_clang) {
693 cflags = [
694 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
695 "-Wno-reorder",
696 "-Wno-sign-compare",
697 ]
698 }
699 }
700
ehmaldonado38a21322016-09-02 04:10:34 -0700701 rtc_source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200702 testonly = true
703 sources = [
704 # Also use this as a convenient dumping ground for misc files that are
705 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700706 "fakeclock.cc",
707 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200708 "fakenetwork.h",
709 "fakesslidentity.h",
710 "faketaskrunner.h",
711 "gunit.h",
712 "testbase64.h",
713 "testechoserver.h",
714 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700715 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200716 "unittest_main.cc",
717 ]
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700718 configs += [ ":rtc_base_tests_utils_warnings_config" ]
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700719 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200720 deps = [
721 ":rtc_base",
722 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200723 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200724 ]
725 public_deps = [
726 "//testing/gtest",
727 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700728
729 if (is_clang) {
730 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700731 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700732 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200733 }
734}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200735
736if (is_android) {
737 android_library("base_java") {
738 java_files = [
739 "java/src/org/webrtc/Logging.java",
740 "java/src/org/webrtc/Size.java",
741 "java/src/org/webrtc/ThreadUtils.java",
742 ]
743
744 deps = [
745 "//base:base_java",
746 ]
747 }
748}