blob: ce33132a3f491677061b9d4547e56e604c976e6e [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",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700119 "location.cc",
120 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000121 "md5.cc",
122 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000123 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000124 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700125 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700126 "onetimeevent.h",
kwiberg2b11fd22016-09-09 03:35:24 -0700127 "optional.cc",
Karl Wibergbe579832015-11-10 22:34:18 +0100128 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000129 "platform_file.cc",
130 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200131 "platform_thread.cc",
132 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800133 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200134 "race_checker.cc",
135 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800136 "random.cc",
137 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700138 "rate_limiter.cc",
139 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800140 "rate_statistics.cc",
141 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700142 "ratetracker.cc",
143 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800144 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800145 "safe_conversions.h",
146 "safe_conversions_impl.h",
kwibergac554ee2016-09-02 00:39:33 -0700147 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800148 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000149 "stringencode.cc",
150 "stringencode.h",
151 "stringutils.cc",
152 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700153 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700154 "systeminfo.cc",
155 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000156 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000157 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000158 "thread_checker.h",
159 "thread_checker_impl.cc",
160 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700161 "timestampaligner.cc",
162 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000163 "timeutils.cc",
164 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000165 "trace_event.h",
kwibergd3134032016-09-05 07:46:20 -0700166 "type_traits.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000167 ]
Noah Richards915590e2015-04-22 15:43:08 -0700168
aleloi16f55a12016-08-23 08:08:23 -0700169 if (is_android) {
170 libs += [ "log" ]
171 }
172
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200173 if (is_posix) {
174 sources += [ "file_posix.cc" ]
175 }
176
177 if (is_win) {
178 sources += [ "file_win.cc" ]
179 }
180
Peter Boström11e02292015-11-25 21:36:14 +0100181 if (build_with_chromium) {
182 # Dependency on chromium's logging (in //base).
183 deps += [ "//base:base" ]
184 sources += [
185 "../../webrtc_overrides/webrtc/base/logging.cc",
186 "../../webrtc_overrides/webrtc/base/logging.h",
187 ]
188 include_dirs = [ "../../webrtc_overrides" ]
189 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700190 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200191 "logging.cc",
192 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200193 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700194 ]
195 }
tommi09c60da2016-05-24 11:40:35 -0700196}
197
Per33b9c8f2016-07-15 08:25:42 +0200198config("enable_libevent_config") {
199 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
200}
201
ehmaldonado38a21322016-09-02 04:10:34 -0700202rtc_static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700203 public_deps = [
204 ":rtc_base_approved",
205 ]
tommi09c60da2016-05-24 11:40:35 -0700206
207 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700208 "sequenced_task_checker.h",
209 "sequenced_task_checker_impl.cc",
210 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700211 ]
tommic06b1332016-05-14 11:31:40 -0700212
perkj84bd5c72016-08-30 23:01:06 -0700213 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700214 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700215 "../../webrtc_overrides/webrtc/base/task_queue.cc",
216 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700217 ]
perkj84bd5c72016-08-30 23:01:06 -0700218 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700219 } else {
perkj84bd5c72016-08-30 23:01:06 -0700220 sources += [
221 "task_queue.h",
222 "task_queue_posix.h",
223 ]
224 if (rtc_build_libevent) {
225 deps = [
226 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700227 ]
228 }
perkj84bd5c72016-08-30 23:01:06 -0700229
230 if (rtc_enable_libevent) {
231 sources += [
232 "task_queue_libevent.cc",
233 "task_queue_posix.cc",
234 ]
235 all_dependent_configs = [ ":enable_libevent_config" ]
236 } else {
237 if (is_mac || is_ios) {
238 sources += [
239 "task_queue_gcd.cc",
240 "task_queue_posix.cc",
241 ]
242 }
243 if (is_win) {
244 sources += [ "task_queue_win.cc" ]
245 }
phoglundff274392016-05-17 03:44:28 -0700246 }
tommic06b1332016-05-14 11:31:40 -0700247 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000248}
249
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700250config("rtc_base_warnings_config") {
251 if (is_win && is_clang) {
252 cflags = [
253 # Disable warnings failing when compiling with Clang on Windows.
254 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
255 "-Wno-sign-compare",
256 "-Wno-missing-braces",
257 ]
258 }
259}
260
ehmaldonado38a21322016-09-02 04:10:34 -0700261rtc_static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000262 cflags = []
263 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000264 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700265 deps = [
266 "..:webrtc_common",
267 ]
Tommid44c0772016-03-11 17:12:32 -0800268 public_deps = [
269 ":rtc_base_approved",
270 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000271
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000272 configs += [
sdefresne0db3db92016-03-21 11:20:28 -0700273 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000274 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000275 ]
276
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000277 public_configs = [
sdefresne0db3db92016-03-21 11:20:28 -0700278 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000279 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000280 ]
281
kjellanderb1f14062016-04-25 00:01:36 -0700282 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200283 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000284
285 sources = [
kthelgasond5472242016-09-09 03:19:48 -0700286 "applefilesystem.mm",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000287 "asyncfile.cc",
288 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700289 "asyncinvoker-inl.h",
290 "asyncinvoker.cc",
291 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000292 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000293 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000294 "asyncresolverinterface.cc",
295 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000296 "asyncsocket.cc",
297 "asyncsocket.h",
298 "asynctcpsocket.cc",
299 "asynctcpsocket.h",
300 "asyncudpsocket.cc",
301 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000302 "autodetectproxy.cc",
303 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000304 "base64.cc",
305 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000306 "common.cc",
307 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000308 "crc32.cc",
309 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000310 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000311 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000312 "diskcache.cc",
313 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700314 "filerotatingstream.cc",
315 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000316 "fileutils.cc",
317 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000318 "firewallsocketserver.cc",
319 "firewallsocketserver.h",
320 "flags.cc",
321 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000322 "gunit_prod.h",
323 "helpers.cc",
324 "helpers.h",
325 "httpbase.cc",
326 "httpbase.h",
327 "httpclient.cc",
328 "httpclient.h",
329 "httpcommon-inl.h",
330 "httpcommon.cc",
331 "httpcommon.h",
332 "httprequest.cc",
333 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000334 "ipaddress.cc",
335 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000336 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000337 "messagedigest.cc",
338 "messagedigest.h",
339 "messagehandler.cc",
340 "messagehandler.h",
341 "messagequeue.cc",
342 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000343 "nethelpers.cc",
344 "nethelpers.h",
345 "network.cc",
346 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700347 "networkmonitor.cc",
348 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700349 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000350 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700351 "openssl.h",
352 "openssladapter.cc",
353 "openssladapter.h",
354 "openssldigest.cc",
355 "openssldigest.h",
356 "opensslidentity.cc",
357 "opensslidentity.h",
358 "opensslstreamadapter.cc",
359 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000360 "pathutils.cc",
361 "pathutils.h",
362 "physicalsocketserver.cc",
363 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000364 "proxydetect.cc",
365 "proxydetect.h",
366 "proxyinfo.cc",
367 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000368 "ratelimiter.cc",
369 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200370 "rtccertificate.cc",
371 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200372 "rtccertificategenerator.cc",
373 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000374 "sha1.cc",
375 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000376 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000377 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800378 "sharedexclusivelock.cc",
379 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000380 "signalthread.cc",
381 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000382 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000383 "sigslot.h",
384 "sigslotrepeater.h",
385 "socket.h",
386 "socketadapters.cc",
387 "socketadapters.h",
388 "socketaddress.cc",
389 "socketaddress.h",
390 "socketaddresspair.cc",
391 "socketaddresspair.h",
392 "socketfactory.h",
393 "socketpool.cc",
394 "socketpool.h",
395 "socketserver.h",
396 "socketstream.cc",
397 "socketstream.h",
398 "ssladapter.cc",
399 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000400 "sslfingerprint.cc",
401 "sslfingerprint.h",
402 "sslidentity.cc",
403 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000404 "sslsocketfactory.cc",
405 "sslsocketfactory.h",
406 "sslstreamadapter.cc",
407 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000408 "stream.cc",
409 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000410 "task.cc",
411 "task.h",
412 "taskparent.cc",
413 "taskparent.h",
414 "taskrunner.cc",
415 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000416 "thread.cc",
417 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000418 "urlencode.cc",
419 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000420 "worker.cc",
421 "worker.h",
422 ]
423
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700424 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
425 # compiler settings.
ehmaldonado38a21322016-09-02 04:10:34 -0700426 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700427 configs += [ "//build/config/compiler:no_chromium_code" ]
428 if (!is_win) {
429 cflags += [ "-Wno-uninitialized" ]
430 }
431
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000432 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000433 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700434 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000435 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000436
437 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700438 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000439 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000440 ]
441
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000442 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000443 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700444 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000445 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000446 "bandwidthsmoother.cc",
447 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000448 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000449 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000450 "httpserver.cc",
451 "httpserver.h",
452 "json.cc",
453 "json.h",
tkchin93411912015-07-22 12:12:17 -0700454 "logsinks.cc",
455 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000456 "mathutils.h",
457 "multipart.cc",
458 "multipart.h",
459 "natserver.cc",
460 "natserver.h",
461 "natsocketfactory.cc",
462 "natsocketfactory.h",
463 "nattypes.cc",
464 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000465 "optionsfile.cc",
466 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000467 "profiler.cc",
468 "profiler.h",
469 "proxyserver.cc",
470 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000471 "referencecountedsingletonfactory.h",
472 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200473 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000474 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000475 "sslconfig.h",
476 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700477 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000478 "testclient.cc",
479 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000480 "transformadapter.cc",
481 "transformadapter.h",
482 "versionparsing.cc",
483 "versionparsing.h",
484 "virtualsocketserver.cc",
485 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000486 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000487 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200488 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000489 ]
490
kjellandera8a7ef62016-04-05 08:13:31 -0700491 if (is_linux) {
492 sources += [
493 "dbus.cc",
494 "dbus.h",
495 "libdbusglibsymboltable.cc",
496 "libdbusglibsymboltable.h",
497 "linuxfdwalk.c",
498 "linuxfdwalk.h",
499 ]
500 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000501
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000502 if (is_posix) {
503 sources += [
504 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000505 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000506 "posix.cc",
507 "posix.h",
508 ]
509 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000510
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000511 if (is_mac) {
512 sources += [
513 "macasyncsocket.cc",
514 "macasyncsocket.h",
515 "maccocoasocketserver.h",
516 "maccocoasocketserver.mm",
517 "macsocketserver.cc",
518 "macsocketserver.h",
519 "macwindowpicker.cc",
520 "macwindowpicker.h",
521 ]
522 }
523
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000524 if (is_win) {
525 sources += [
526 "diskcache_win32.cc",
527 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000528 "win32regkey.cc",
529 "win32regkey.h",
530 "win32socketinit.cc",
531 "win32socketinit.h",
532 "win32socketserver.cc",
533 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000534 ]
535 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700536
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000537 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000538 deps += [ "//third_party/jsoncpp" ]
539 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700540 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000541
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000542 # When defined changes the include path for json.h to where it is
543 # expected to be when building json outside of the standalone build.
544 defines += [ "WEBRTC_EXTERNAL_JSON" ]
545 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000546 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000547
svaldez7f7a8192016-04-18 11:13:11 -0700548 if (rtc_build_ssl) {
549 deps += [ "//third_party/boringssl" ]
550 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700551 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000552 }
553
554 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000555 sources += [
556 "ifaddrs-android.cc",
557 "ifaddrs-android.h",
558 ]
559
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000560 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000561 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200562 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000563 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000564 }
565
kjellandera8a7ef62016-04-05 08:13:31 -0700566 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200567 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700568 "maccocoathreadhelper.h",
569 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200570 "macconversion.cc",
571 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700572 "macifaddrs_converter.cc",
573 "scoped_autorelease_pool.h",
574 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200575 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000576 }
577
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000578 if (use_x11) {
579 sources += [
580 "x11windowpicker.cc",
581 "x11windowpicker.h",
582 ]
583 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000584 "dl",
585 "rt",
586 "Xext",
587 "X11",
588 "Xcomposite",
589 "Xrender",
590 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000591 }
592
593 if (is_linux) {
594 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000595 "dl",
596 "rt",
597 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000598 }
599
600 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000601 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000602 "macutils.cc",
603 "macutils.h",
604 ]
kjellander3bcedd32016-06-08 01:14:15 -0700605 libs += [
606 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
607 "ApplicationServices.framework",
608
609 # For GetGestalt in macutils.cc.
610 "CoreServices.framework",
611 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000612 }
613
614 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000615 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000616 "win32.cc",
617 "win32.h",
618 "win32filesystem.cc",
619 "win32filesystem.h",
620 "win32securityerrors.cc",
621 "win32window.cc",
622 "win32window.h",
623 "win32windowpicker.cc",
624 "win32windowpicker.h",
625 "winfirewall.cc",
626 "winfirewall.h",
627 "winping.cc",
628 "winping.h",
629 ]
630
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000631 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000632 "crypt32.lib",
633 "iphlpapi.lib",
634 "secur32.lib",
635 ]
636
637 cflags += [
638 # Suppress warnings about WIN32_LEAN_AND_MEAN.
639 "/wd4005",
640 "/wd4703",
641 ]
642
643 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000644 }
645
kjellandera8a7ef62016-04-05 08:13:31 -0700646 if (is_posix) {
647 sources += [
648 "ifaddrs_converter.cc",
649 "ifaddrs_converter.h",
650 "unixfilesystem.cc",
651 "unixfilesystem.h",
652 ]
653 if (is_debug) {
654 # The Chromium build/common.gypi defines this for all posix
655 # _except_ for ios & mac. We want it there as well, e.g.
656 # because ASSERT and friends trigger off of it.
657 defines += [ "_DEBUG" ]
658 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000659 }
660
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000661 if (is_linux || is_android) {
662 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000663 "linux.cc",
664 "linux.h",
665 ]
666 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700667
668 if (is_nacl) {
669 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
670 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800671 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700672 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700673 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700674 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700675 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700676 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000677}
tkchin42f580e2015-11-26 23:18:23 -0800678
ehmaldonado38a21322016-09-02 04:10:34 -0700679rtc_source_set("gtest_prod") {
kjellander988d31e2016-02-05 00:23:50 -0800680 sources = [
681 "gtest_prod_util.h",
682 ]
683}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200684
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200685if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700686 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200687 defines = [ "GTEST_RELATIVE_PATH" ]
688 }
689
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700690 config("rtc_base_tests_utils_warnings_config") {
691 if (is_win && is_clang) {
692 cflags = [
693 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
694 "-Wno-reorder",
695 "-Wno-sign-compare",
696 ]
697 }
698 }
699
ehmaldonado38a21322016-09-02 04:10:34 -0700700 rtc_source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200701 testonly = true
702 sources = [
703 # Also use this as a convenient dumping ground for misc files that are
704 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700705 "fakeclock.cc",
706 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200707 "fakenetwork.h",
708 "fakesslidentity.h",
709 "faketaskrunner.h",
710 "gunit.h",
711 "testbase64.h",
712 "testechoserver.h",
713 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700714 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200715 "unittest_main.cc",
716 ]
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700717 configs += [ ":rtc_base_tests_utils_warnings_config" ]
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700718 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200719 deps = [
720 ":rtc_base",
721 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200722 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200723 ]
724 public_deps = [
725 "//testing/gtest",
726 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700727
728 if (is_clang) {
729 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700730 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700731 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200732 }
733}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200734
735if (is_android) {
736 android_library("base_java") {
737 java_files = [
738 "java/src/org/webrtc/Logging.java",
739 "java/src/org/webrtc/Size.java",
740 "java/src/org/webrtc/ThreadUtils.java",
741 ]
742
743 deps = [
744 "//base:base_java",
745 ]
746 }
747}