blob: 2b1be290583c414e464b45bab985d3f9a602efcf [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 ]
kjellanderb1f14062016-04-25 00:01:36 -070066 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000067}
68
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000069if (is_linux && !build_with_chromium) {
70 # Provides the same functionality as the //crypto:platform target, which
71 # WebRTC cannot use as we don't sync src/crypto from Chromium.
72 group("linux_system_ssl") {
svaldez7f7a8192016-04-18 11:13:11 -070073 deps = [
74 "//third_party/boringssl",
75 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000076 }
77}
78
kjellanderec5c9062016-08-19 01:07:30 -070079if (!rtc_build_ssl) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000080 config("external_ssl_library") {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000081 assert(rtc_ssl_root != "",
82 "You must specify rtc_ssl_root when rtc_build_ssl==0.")
83 include_dirs = [ rtc_ssl_root ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000084 }
85}
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000086
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000087# The subset of rtc_base approved for use outside of libjingle.
ehmaldonado38a21322016-09-02 04:10:34 -070088rtc_static_library("rtc_base_approved") {
tommic06b1332016-05-14 11:31:40 -070089 defines = []
aleloi16f55a12016-08-23 08:08:23 -070090 libs = []
Peter Boström11e02292015-11-25 21:36:14 +010091 deps = []
kjellander84ba8b62016-04-24 23:03:07 -070092 all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ]
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000093
94 sources = [
Karl Wiberge2a83ee2015-10-26 19:51:29 +010095 "array_view.h",
Peter Boströmff019b02015-04-30 14:16:07 +020096 "atomicops.h",
Tommicc4fdde2016-04-22 19:34:59 +020097 "bind.h",
Noah Richards915590e2015-04-22 15:43:08 -070098 "bitbuffer.cc",
99 "bitbuffer.h",
Karl Wiberg94784372015-04-20 14:03:07 +0200100 "buffer.h",
Joachim Bauch6f2ef742015-05-21 17:52:01 +0200101 "bufferqueue.cc",
102 "bufferqueue.h",
Noah Richards915590e2015-04-22 15:43:08 -0700103 "bytebuffer.cc",
104 "bytebuffer.h",
105 "byteorder.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000106 "checks.cc",
107 "checks.h",
Peter Boströmfd5dae32015-11-26 12:54:24 +0100108 "constructormagic.h",
tommiebfbab52016-03-19 11:36:18 -0700109 "copyonwritebuffer.cc",
110 "copyonwritebuffer.h",
Tommi494f2092015-04-27 17:39:23 +0200111 "criticalsection.cc",
112 "criticalsection.h",
kwiberg45fd9fe2015-12-16 01:09:16 -0800113 "deprecation.h",
tommi@webrtc.org4c0fd962015-02-09 10:23:27 +0000114 "event.cc",
115 "event.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000116 "event_tracer.cc",
117 "event_tracer.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000118 "exp_filter.cc",
119 "exp_filter.h",
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200120 "file.cc",
121 "file.h",
ivoc48052312016-08-25 04:43:45 -0700122 "format_macros.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700123 "location.cc",
124 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000125 "md5.cc",
126 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000127 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000128 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700129 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700130 "onetimeevent.h",
kwiberg2b11fd22016-09-09 03:35:24 -0700131 "optional.cc",
Karl Wibergbe579832015-11-10 22:34:18 +0100132 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000133 "platform_file.cc",
134 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200135 "platform_thread.cc",
136 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800137 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200138 "race_checker.cc",
139 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800140 "random.cc",
141 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700142 "rate_limiter.cc",
143 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800144 "rate_statistics.cc",
145 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700146 "ratetracker.cc",
147 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800148 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800149 "safe_conversions.h",
150 "safe_conversions_impl.h",
kwibergac554ee2016-09-02 00:39:33 -0700151 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800152 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000153 "stringencode.cc",
154 "stringencode.h",
155 "stringutils.cc",
156 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700157 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700158 "systeminfo.cc",
159 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000160 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000161 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000162 "thread_checker.h",
163 "thread_checker_impl.cc",
164 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700165 "timestampaligner.cc",
166 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000167 "timeutils.cc",
168 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000169 "trace_event.h",
kwibergd3134032016-09-05 07:46:20 -0700170 "type_traits.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000171 ]
Noah Richards915590e2015-04-22 15:43:08 -0700172
aleloi16f55a12016-08-23 08:08:23 -0700173 if (is_android) {
174 libs += [ "log" ]
175 }
176
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200177 if (is_posix) {
178 sources += [ "file_posix.cc" ]
179 }
180
181 if (is_win) {
182 sources += [ "file_win.cc" ]
183 }
184
Peter Boström11e02292015-11-25 21:36:14 +0100185 if (build_with_chromium) {
186 # Dependency on chromium's logging (in //base).
187 deps += [ "//base:base" ]
188 sources += [
189 "../../webrtc_overrides/webrtc/base/logging.cc",
190 "../../webrtc_overrides/webrtc/base/logging.h",
191 ]
192 include_dirs = [ "../../webrtc_overrides" ]
193 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700194 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200195 "logging.cc",
196 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200197 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700198 ]
199 }
tommi09c60da2016-05-24 11:40:35 -0700200}
201
Per33b9c8f2016-07-15 08:25:42 +0200202config("enable_libevent_config") {
203 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
204}
205
ehmaldonado38a21322016-09-02 04:10:34 -0700206rtc_static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700207 public_deps = [
208 ":rtc_base_approved",
209 ]
tommi09c60da2016-05-24 11:40:35 -0700210
211 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700212 "sequenced_task_checker.h",
213 "sequenced_task_checker_impl.cc",
214 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700215 ]
tommic06b1332016-05-14 11:31:40 -0700216
perkj84bd5c72016-08-30 23:01:06 -0700217 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700218 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700219 "../../webrtc_overrides/webrtc/base/task_queue.cc",
220 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700221 ]
perkj84bd5c72016-08-30 23:01:06 -0700222 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700223 } else {
perkj84bd5c72016-08-30 23:01:06 -0700224 sources += [
225 "task_queue.h",
226 "task_queue_posix.h",
227 ]
228 if (rtc_build_libevent) {
229 deps = [
230 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700231 ]
232 }
perkj84bd5c72016-08-30 23:01:06 -0700233
234 if (rtc_enable_libevent) {
235 sources += [
236 "task_queue_libevent.cc",
237 "task_queue_posix.cc",
238 ]
239 all_dependent_configs = [ ":enable_libevent_config" ]
240 } else {
241 if (is_mac || is_ios) {
242 sources += [
243 "task_queue_gcd.cc",
244 "task_queue_posix.cc",
245 ]
246 }
247 if (is_win) {
248 sources += [ "task_queue_win.cc" ]
249 }
phoglundff274392016-05-17 03:44:28 -0700250 }
tommic06b1332016-05-14 11:31:40 -0700251 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000252}
253
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700254config("rtc_base_warnings_config") {
255 if (is_win && is_clang) {
256 cflags = [
257 # Disable warnings failing when compiling with Clang on Windows.
258 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
259 "-Wno-sign-compare",
260 "-Wno-missing-braces",
261 ]
262 }
263}
264
ehmaldonado38a21322016-09-02 04:10:34 -0700265rtc_static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000266 cflags = []
267 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000268 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700269 deps = [
270 "..:webrtc_common",
271 ]
Tommid44c0772016-03-11 17:12:32 -0800272 public_deps = [
273 ":rtc_base_approved",
274 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000275
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000276 configs += [
sdefresne0db3db92016-03-21 11:20:28 -0700277 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000278 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000279 ]
280
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000281 public_configs = [
sdefresne0db3db92016-03-21 11:20:28 -0700282 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000283 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000284 ]
285
kjellanderb1f14062016-04-25 00:01:36 -0700286 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200287 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000288
289 sources = [
kthelgasond5472242016-09-09 03:19:48 -0700290 "applefilesystem.mm",
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000291 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000292 "asyncfile.cc",
293 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700294 "asyncinvoker-inl.h",
295 "asyncinvoker.cc",
296 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000297 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000298 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000299 "asyncresolverinterface.cc",
300 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000301 "asyncsocket.cc",
302 "asyncsocket.h",
303 "asynctcpsocket.cc",
304 "asynctcpsocket.h",
305 "asyncudpsocket.cc",
306 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000307 "autodetectproxy.cc",
308 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000309 "base64.cc",
310 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000311 "common.cc",
312 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "crc32.cc",
314 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000315 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000316 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000317 "diskcache.cc",
318 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700319 "filerotatingstream.cc",
320 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000321 "fileutils.cc",
322 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000323 "firewallsocketserver.cc",
324 "firewallsocketserver.h",
325 "flags.cc",
326 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000327 "gunit_prod.h",
328 "helpers.cc",
329 "helpers.h",
330 "httpbase.cc",
331 "httpbase.h",
332 "httpclient.cc",
333 "httpclient.h",
334 "httpcommon-inl.h",
335 "httpcommon.cc",
336 "httpcommon.h",
337 "httprequest.cc",
338 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000339 "ipaddress.cc",
340 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000341 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000342 "messagedigest.cc",
343 "messagedigest.h",
344 "messagehandler.cc",
345 "messagehandler.h",
346 "messagequeue.cc",
347 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000348 "nethelpers.cc",
349 "nethelpers.h",
350 "network.cc",
351 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700352 "networkmonitor.cc",
353 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700354 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000355 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700356 "openssl.h",
357 "openssladapter.cc",
358 "openssladapter.h",
359 "openssldigest.cc",
360 "openssldigest.h",
361 "opensslidentity.cc",
362 "opensslidentity.h",
363 "opensslstreamadapter.cc",
364 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000365 "pathutils.cc",
366 "pathutils.h",
367 "physicalsocketserver.cc",
368 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000369 "proxydetect.cc",
370 "proxydetect.h",
371 "proxyinfo.cc",
372 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000373 "ratelimiter.cc",
374 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200375 "rtccertificate.cc",
376 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200377 "rtccertificategenerator.cc",
378 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000379 "sha1.cc",
380 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000381 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000382 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800383 "sharedexclusivelock.cc",
384 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000385 "signalthread.cc",
386 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000387 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000388 "sigslot.h",
389 "sigslotrepeater.h",
390 "socket.h",
391 "socketadapters.cc",
392 "socketadapters.h",
393 "socketaddress.cc",
394 "socketaddress.h",
395 "socketaddresspair.cc",
396 "socketaddresspair.h",
397 "socketfactory.h",
398 "socketpool.cc",
399 "socketpool.h",
400 "socketserver.h",
401 "socketstream.cc",
402 "socketstream.h",
403 "ssladapter.cc",
404 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000405 "sslfingerprint.cc",
406 "sslfingerprint.h",
407 "sslidentity.cc",
408 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000409 "sslsocketfactory.cc",
410 "sslsocketfactory.h",
411 "sslstreamadapter.cc",
412 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000413 "stream.cc",
414 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000415 "task.cc",
416 "task.h",
417 "taskparent.cc",
418 "taskparent.h",
419 "taskrunner.cc",
420 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000421 "thread.cc",
422 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000423 "timing.cc",
424 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000425 "urlencode.cc",
426 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000427 "worker.cc",
428 "worker.h",
429 ]
430
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700431 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
432 # compiler settings.
ehmaldonado38a21322016-09-02 04:10:34 -0700433 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700434 configs += [ "//build/config/compiler:no_chromium_code" ]
435 if (!is_win) {
436 cflags += [ "-Wno-uninitialized" ]
437 }
438
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000439 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000440 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700441 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000442 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000443
444 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700445 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000446 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000447 ]
448
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000449 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000450 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700451 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000452 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000453 "bandwidthsmoother.cc",
454 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000455 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000456 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000457 "httpserver.cc",
458 "httpserver.h",
459 "json.cc",
460 "json.h",
tkchin93411912015-07-22 12:12:17 -0700461 "logsinks.cc",
462 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000463 "mathutils.h",
464 "multipart.cc",
465 "multipart.h",
466 "natserver.cc",
467 "natserver.h",
468 "natsocketfactory.cc",
469 "natsocketfactory.h",
470 "nattypes.cc",
471 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000472 "optionsfile.cc",
473 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000474 "profiler.cc",
475 "profiler.h",
476 "proxyserver.cc",
477 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000478 "referencecountedsingletonfactory.h",
479 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200480 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000481 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000482 "sslconfig.h",
483 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700484 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000485 "testclient.cc",
486 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000487 "transformadapter.cc",
488 "transformadapter.h",
489 "versionparsing.cc",
490 "versionparsing.h",
491 "virtualsocketserver.cc",
492 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000493 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000494 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200495 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000496 ]
497
kjellandera8a7ef62016-04-05 08:13:31 -0700498 if (is_linux) {
499 sources += [
500 "dbus.cc",
501 "dbus.h",
502 "libdbusglibsymboltable.cc",
503 "libdbusglibsymboltable.h",
504 "linuxfdwalk.c",
505 "linuxfdwalk.h",
506 ]
507 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000508
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000509 if (is_posix) {
510 sources += [
511 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000512 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000513 "posix.cc",
514 "posix.h",
515 ]
516 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000517
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000518 if (is_mac) {
519 sources += [
520 "macasyncsocket.cc",
521 "macasyncsocket.h",
522 "maccocoasocketserver.h",
523 "maccocoasocketserver.mm",
524 "macsocketserver.cc",
525 "macsocketserver.h",
526 "macwindowpicker.cc",
527 "macwindowpicker.h",
528 ]
529 }
530
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000531 if (is_win) {
532 sources += [
533 "diskcache_win32.cc",
534 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000535 "win32regkey.cc",
536 "win32regkey.h",
537 "win32socketinit.cc",
538 "win32socketinit.h",
539 "win32socketserver.cc",
540 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000541 ]
542 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700543
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000544 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000545 deps += [ "//third_party/jsoncpp" ]
546 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700547 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000548
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000549 # When defined changes the include path for json.h to where it is
550 # expected to be when building json outside of the standalone build.
551 defines += [ "WEBRTC_EXTERNAL_JSON" ]
552 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000553 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000554
svaldez7f7a8192016-04-18 11:13:11 -0700555 if (rtc_build_ssl) {
556 deps += [ "//third_party/boringssl" ]
557 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700558 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000559 }
560
561 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000562 sources += [
563 "ifaddrs-android.cc",
564 "ifaddrs-android.h",
565 ]
566
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000567 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000568 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200569 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000570 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000571 }
572
kjellandera8a7ef62016-04-05 08:13:31 -0700573 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200574 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700575 "maccocoathreadhelper.h",
576 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200577 "macconversion.cc",
578 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700579 "macifaddrs_converter.cc",
580 "scoped_autorelease_pool.h",
581 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200582 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000583 }
584
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000585 if (use_x11) {
586 sources += [
587 "x11windowpicker.cc",
588 "x11windowpicker.h",
589 ]
590 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000591 "dl",
592 "rt",
593 "Xext",
594 "X11",
595 "Xcomposite",
596 "Xrender",
597 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000598 }
599
600 if (is_linux) {
601 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000602 "dl",
603 "rt",
604 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000605 }
606
607 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000608 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000609 "macutils.cc",
610 "macutils.h",
611 ]
kjellander3bcedd32016-06-08 01:14:15 -0700612 libs += [
613 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
614 "ApplicationServices.framework",
615
616 # For GetGestalt in macutils.cc.
617 "CoreServices.framework",
618 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000619 }
620
621 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000622 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000623 "win32.cc",
624 "win32.h",
625 "win32filesystem.cc",
626 "win32filesystem.h",
627 "win32securityerrors.cc",
628 "win32window.cc",
629 "win32window.h",
630 "win32windowpicker.cc",
631 "win32windowpicker.h",
632 "winfirewall.cc",
633 "winfirewall.h",
634 "winping.cc",
635 "winping.h",
636 ]
637
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000638 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000639 "crypt32.lib",
640 "iphlpapi.lib",
641 "secur32.lib",
642 ]
643
644 cflags += [
645 # Suppress warnings about WIN32_LEAN_AND_MEAN.
646 "/wd4005",
647 "/wd4703",
648 ]
649
650 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000651 }
652
kjellandera8a7ef62016-04-05 08:13:31 -0700653 if (is_posix) {
654 sources += [
655 "ifaddrs_converter.cc",
656 "ifaddrs_converter.h",
657 "unixfilesystem.cc",
658 "unixfilesystem.h",
659 ]
660 if (is_debug) {
661 # The Chromium build/common.gypi defines this for all posix
662 # _except_ for ios & mac. We want it there as well, e.g.
663 # because ASSERT and friends trigger off of it.
664 defines += [ "_DEBUG" ]
665 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000666 }
667
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000668 if (is_linux || is_android) {
669 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000670 "linux.cc",
671 "linux.h",
672 ]
673 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700674
675 if (is_nacl) {
676 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
677 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800678 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700679 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700680 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700681 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700682 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700683 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000684}
tkchin42f580e2015-11-26 23:18:23 -0800685
ehmaldonado38a21322016-09-02 04:10:34 -0700686rtc_source_set("gtest_prod") {
kjellander988d31e2016-02-05 00:23:50 -0800687 sources = [
688 "gtest_prod_util.h",
689 ]
690}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200691
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200692if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700693 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200694 defines = [ "GTEST_RELATIVE_PATH" ]
695 }
696
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700697 config("rtc_base_tests_utils_warnings_config") {
698 if (is_win && is_clang) {
699 cflags = [
700 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
701 "-Wno-reorder",
702 "-Wno-sign-compare",
703 ]
704 }
705 }
706
ehmaldonado38a21322016-09-02 04:10:34 -0700707 rtc_source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200708 testonly = true
709 sources = [
710 # Also use this as a convenient dumping ground for misc files that are
711 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700712 "fakeclock.cc",
713 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200714 "fakenetwork.h",
715 "fakesslidentity.h",
716 "faketaskrunner.h",
717 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700718 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200719 "testbase64.h",
720 "testechoserver.h",
721 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700722 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200723 "unittest_main.cc",
724 ]
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700725 configs += [ ":rtc_base_tests_utils_warnings_config" ]
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700726 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200727 deps = [
728 ":rtc_base",
729 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200730 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200731 ]
732 public_deps = [
733 "//testing/gtest",
734 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700735
736 if (is_clang) {
737 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700738 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700739 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200740 }
741}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200742
743if (is_android) {
744 android_library("base_java") {
745 java_files = [
746 "java/src/org/webrtc/Logging.java",
747 "java/src/org/webrtc/Size.java",
748 "java/src/org/webrtc/ThreadUtils.java",
749 ]
750
751 deps = [
752 "//base:base_java",
753 ]
754 }
755}