blob: 94c4d81e3dc79a3d0e1d31617103eef5f21bde33 [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
kjellander70bed7d2015-11-23 17:23:44 -080013import("//build_overrides/webrtc.gni")
kjellander70bed7d2015-11-23 17:23:44 -080014
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +020015if (is_android) {
16 import("//build/config/android/config.gni")
17 import("//build/config/android/rules.gni")
18}
19
kjellander84ba8b62016-04-24 23:03:07 -070020config("rtc_base_approved_all_dependent_config") {
21 if (is_mac && !build_with_chromium) {
22 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
23 }
24}
25
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000026config("rtc_base_config") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000027 include_dirs = [
28 "//third_party/jsoncpp/overrides/include",
29 "//third_party/jsoncpp/source/include",
30 ]
31
32 defines = [
33 "FEATURE_ENABLE_SSL",
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000034 "LOGGING=1",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000035 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000036}
37
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000038config("rtc_base_chromium_config") {
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020039 defines = [ "NO_MAIN_THREAD_WRAPPING" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000040}
41
42config("openssl_config") {
43 defines = [
44 "SSL_USE_OPENSSL",
45 "HAVE_OPENSSL_SSL_H",
46 ]
47}
48
kjellanderb1f14062016-04-25 00:01:36 -070049config("rtc_base_all_dependent_config") {
50 if (is_ios) {
51 libs = [
52 "CFNetwork.framework",
Zeke Chin2d3b7e22015-07-14 12:55:44 -070053
kjellanderb1f14062016-04-25 00:01:36 -070054 #"Foundation.framework", # Already in //build/config:default_libs.
55 "Security.framework",
56 "SystemConfiguration.framework",
kjellander3bcedd32016-06-08 01:14:15 -070057 "UIKit.framework",
kjellanderb1f14062016-04-25 00:01:36 -070058 ]
59 }
60 if (is_mac) {
61 libs = [
62 "Cocoa.framework",
63 "Foundation.framework",
64 "IOKit.framework",
65 "Security.framework",
66 "SystemConfiguration.framework",
67 ]
68 if (current_cpu == "x86") {
kjellander781e0c02016-06-13 05:41:11 -070069 libs += [ "Carbon.framework" ]
kjellanderb1f14062016-04-25 00:01:36 -070070 }
71 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000072}
73
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000074if (is_linux && !build_with_chromium) {
75 # Provides the same functionality as the //crypto:platform target, which
76 # WebRTC cannot use as we don't sync src/crypto from Chromium.
77 group("linux_system_ssl") {
svaldez7f7a8192016-04-18 11:13:11 -070078 deps = [
79 "//third_party/boringssl",
80 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000081 }
82}
83
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000084if (rtc_build_ssl == 0) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000085 config("external_ssl_library") {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000086 assert(rtc_ssl_root != "",
87 "You must specify rtc_ssl_root when rtc_build_ssl==0.")
88 include_dirs = [ rtc_ssl_root ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000089 }
90}
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000091
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000092# The subset of rtc_base approved for use outside of libjingle.
93static_library("rtc_base_approved") {
tommic06b1332016-05-14 11:31:40 -070094 defines = []
Peter Boström11e02292015-11-25 21:36:14 +010095 deps = []
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000096 configs += [ "..:common_config" ]
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +000097 public_configs = [ "..:common_inherited_config" ]
kjellander84ba8b62016-04-24 23:03:07 -070098 all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ]
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000099
100 sources = [
Karl Wiberge2a83ee2015-10-26 19:51:29 +0100101 "array_view.h",
Peter Boströmff019b02015-04-30 14:16:07 +0200102 "atomicops.h",
Tommicc4fdde2016-04-22 19:34:59 +0200103 "bind.h",
Noah Richards915590e2015-04-22 15:43:08 -0700104 "bitbuffer.cc",
105 "bitbuffer.h",
Karl Wiberg94784372015-04-20 14:03:07 +0200106 "buffer.h",
Joachim Bauch6f2ef742015-05-21 17:52:01 +0200107 "bufferqueue.cc",
108 "bufferqueue.h",
Noah Richards915590e2015-04-22 15:43:08 -0700109 "bytebuffer.cc",
110 "bytebuffer.h",
111 "byteorder.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000112 "checks.cc",
113 "checks.h",
Peter Boströmfd5dae32015-11-26 12:54:24 +0100114 "constructormagic.h",
tommiebfbab52016-03-19 11:36:18 -0700115 "copyonwritebuffer.cc",
116 "copyonwritebuffer.h",
Tommi494f2092015-04-27 17:39:23 +0200117 "criticalsection.cc",
118 "criticalsection.h",
kwiberg45fd9fe2015-12-16 01:09:16 -0800119 "deprecation.h",
tommi@webrtc.org4c0fd962015-02-09 10:23:27 +0000120 "event.cc",
121 "event.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000122 "event_tracer.cc",
123 "event_tracer.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000124 "exp_filter.cc",
125 "exp_filter.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700126 "location.cc",
127 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000128 "md5.cc",
129 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000130 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000131 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700132 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700133 "onetimeevent.h",
Karl Wibergbe579832015-11-10 22:34:18 +0100134 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000135 "platform_file.cc",
136 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200137 "platform_thread.cc",
138 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800139 "platform_thread_types.h",
terelius84e78f92015-12-10 01:50:55 -0800140 "random.cc",
141 "random.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",
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",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000167 ]
Noah Richards915590e2015-04-22 15:43:08 -0700168
Peter Boström11e02292015-11-25 21:36:14 +0100169 if (build_with_chromium) {
170 # Dependency on chromium's logging (in //base).
171 deps += [ "//base:base" ]
172 sources += [
173 "../../webrtc_overrides/webrtc/base/logging.cc",
174 "../../webrtc_overrides/webrtc/base/logging.h",
175 ]
176 include_dirs = [ "../../webrtc_overrides" ]
177 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700178 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200179 "logging.cc",
180 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200181 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700182 ]
183 }
tommi09c60da2016-05-24 11:40:35 -0700184}
185
186static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700187 public_deps = [
188 ":rtc_base_approved",
189 ]
tommi09c60da2016-05-24 11:40:35 -0700190 configs += [ "..:common_config" ]
191
192 sources = [
193 "task_queue.h",
194 "task_queue_posix.h",
195 ]
tommic06b1332016-05-14 11:31:40 -0700196
phoglundff274392016-05-17 03:44:28 -0700197 if (rtc_build_libevent) {
kjellanderbac04122016-06-02 02:18:48 -0700198 deps = [
199 "//base/third_party/libevent",
200 ]
tommic06b1332016-05-14 11:31:40 -0700201 }
tommi09c60da2016-05-24 11:40:35 -0700202
phoglundff274392016-05-17 03:44:28 -0700203 if (rtc_enable_libevent) {
204 sources += [
205 "task_queue_libevent.cc",
206 "task_queue_posix.cc",
207 ]
208 } else {
phoglundff274392016-05-17 03:44:28 -0700209 if (is_mac || is_ios) {
210 sources += [
211 "task_queue_gcd.cc",
212 "task_queue_posix.cc",
213 ]
214 }
215 if (is_win) {
216 sources += [ "task_queue_win.cc" ]
217 }
tommic06b1332016-05-14 11:31:40 -0700218 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000219}
220
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000221static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000222 cflags = []
223 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000224 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700225 deps = [
226 "..:webrtc_common",
227 ]
Tommid44c0772016-03-11 17:12:32 -0800228 public_deps = [
229 ":rtc_base_approved",
230 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000231
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000232 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000233 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700234 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000235 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000236 ]
237
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000238 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000239 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700240 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000241 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000242 ]
243
kjellanderb1f14062016-04-25 00:01:36 -0700244 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
245
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200246 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000247
248 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000249 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000250 "asyncfile.cc",
251 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700252 "asyncinvoker-inl.h",
253 "asyncinvoker.cc",
254 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000255 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000256 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000257 "asyncresolverinterface.cc",
258 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000259 "asyncsocket.cc",
260 "asyncsocket.h",
261 "asynctcpsocket.cc",
262 "asynctcpsocket.h",
263 "asyncudpsocket.cc",
264 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000265 "autodetectproxy.cc",
266 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000267 "base64.cc",
268 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000269 "common.cc",
270 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000271 "crc32.cc",
272 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000273 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000274 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000275 "diskcache.cc",
276 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700277 "filerotatingstream.cc",
278 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000279 "fileutils.cc",
280 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000281 "firewallsocketserver.cc",
282 "firewallsocketserver.h",
283 "flags.cc",
284 "flags.h",
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +0000285 "format_macros.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286 "gunit_prod.h",
287 "helpers.cc",
288 "helpers.h",
289 "httpbase.cc",
290 "httpbase.h",
291 "httpclient.cc",
292 "httpclient.h",
293 "httpcommon-inl.h",
294 "httpcommon.cc",
295 "httpcommon.h",
296 "httprequest.cc",
297 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000298 "iosfilesystem.mm",
299 "ipaddress.cc",
300 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000301 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000302 "messagedigest.cc",
303 "messagedigest.h",
304 "messagehandler.cc",
305 "messagehandler.h",
306 "messagequeue.cc",
307 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000308 "nethelpers.cc",
309 "nethelpers.h",
310 "network.cc",
311 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700312 "networkmonitor.cc",
313 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700314 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000315 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700316 "openssl.h",
317 "openssladapter.cc",
318 "openssladapter.h",
319 "openssldigest.cc",
320 "openssldigest.h",
321 "opensslidentity.cc",
322 "opensslidentity.h",
323 "opensslstreamadapter.cc",
324 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000325 "pathutils.cc",
326 "pathutils.h",
327 "physicalsocketserver.cc",
328 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000329 "proxydetect.cc",
330 "proxydetect.h",
331 "proxyinfo.cc",
332 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000333 "ratelimiter.cc",
334 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200335 "rtccertificate.cc",
336 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200337 "rtccertificategenerator.cc",
338 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000339 "sha1.cc",
340 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000341 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000342 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800343 "sharedexclusivelock.cc",
344 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000345 "signalthread.cc",
346 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000347 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000348 "sigslot.h",
349 "sigslotrepeater.h",
350 "socket.h",
351 "socketadapters.cc",
352 "socketadapters.h",
353 "socketaddress.cc",
354 "socketaddress.h",
355 "socketaddresspair.cc",
356 "socketaddresspair.h",
357 "socketfactory.h",
358 "socketpool.cc",
359 "socketpool.h",
360 "socketserver.h",
361 "socketstream.cc",
362 "socketstream.h",
363 "ssladapter.cc",
364 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000365 "sslfingerprint.cc",
366 "sslfingerprint.h",
367 "sslidentity.cc",
368 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000369 "sslsocketfactory.cc",
370 "sslsocketfactory.h",
371 "sslstreamadapter.cc",
372 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000373 "stream.cc",
374 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000375 "task.cc",
376 "task.h",
377 "taskparent.cc",
378 "taskparent.h",
379 "taskrunner.cc",
380 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000381 "thread.cc",
382 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000383 "timing.cc",
384 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000385 "urlencode.cc",
386 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000387 "worker.cc",
388 "worker.h",
389 ]
390
391 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000392 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700393 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000394 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000395
396 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700397 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000398 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000399 ]
400
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000401 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000402 } else {
403 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000404 "bandwidthsmoother.cc",
405 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000406 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000407 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000408 "httpserver.cc",
409 "httpserver.h",
410 "json.cc",
411 "json.h",
tkchin93411912015-07-22 12:12:17 -0700412 "logsinks.cc",
413 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000414 "mathutils.h",
415 "multipart.cc",
416 "multipart.h",
417 "natserver.cc",
418 "natserver.h",
419 "natsocketfactory.cc",
420 "natsocketfactory.h",
421 "nattypes.cc",
422 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000423 "optionsfile.cc",
424 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000425 "profiler.cc",
426 "profiler.h",
427 "proxyserver.cc",
428 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000429 "referencecountedsingletonfactory.h",
430 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200431 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000432 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000433 "sslconfig.h",
434 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700435 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000436 "testclient.cc",
437 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000438 "transformadapter.cc",
439 "transformadapter.h",
440 "versionparsing.cc",
441 "versionparsing.h",
442 "virtualsocketserver.cc",
443 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000444 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000445 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200446 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000447 ]
448
kjellandera8a7ef62016-04-05 08:13:31 -0700449 if (is_linux) {
450 sources += [
451 "dbus.cc",
452 "dbus.h",
453 "libdbusglibsymboltable.cc",
454 "libdbusglibsymboltable.h",
455 "linuxfdwalk.c",
456 "linuxfdwalk.h",
457 ]
458 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000459
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000460 if (is_posix) {
461 sources += [
462 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000463 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000464 "posix.cc",
465 "posix.h",
466 ]
467 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000468
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000469 if (is_mac) {
470 sources += [
471 "macasyncsocket.cc",
472 "macasyncsocket.h",
473 "maccocoasocketserver.h",
474 "maccocoasocketserver.mm",
475 "macsocketserver.cc",
476 "macsocketserver.h",
477 "macwindowpicker.cc",
478 "macwindowpicker.h",
479 ]
480 }
481
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000482 if (is_win) {
483 sources += [
484 "diskcache_win32.cc",
485 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000486 "win32regkey.cc",
487 "win32regkey.h",
488 "win32socketinit.cc",
489 "win32socketinit.h",
490 "win32socketserver.cc",
491 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000492 ]
493 }
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000494 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000495 deps += [ "//third_party/jsoncpp" ]
496 } else {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000497 include_dirs += [ rtc_jsoncpp_root ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000498
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000499 # When defined changes the include path for json.h to where it is
500 # expected to be when building json outside of the standalone build.
501 defines += [ "WEBRTC_EXTERNAL_JSON" ]
502 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000503 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000504
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000505 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
kjellander@webrtc.org62711f82014-06-29 13:37:08 +0000506 # compiler settings.
507 configs -= [ "//build/config/compiler:chromium_code" ]
508 configs += [ "//build/config/compiler:no_chromium_code" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000509 if (!is_win) {
510 cflags += [ "-Wno-uninitialized" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000511 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000512
svaldez7f7a8192016-04-18 11:13:11 -0700513 if (rtc_build_ssl) {
514 deps += [ "//third_party/boringssl" ]
515 } else {
516 configs += [ "external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000517 }
518
519 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000520 sources += [
521 "ifaddrs-android.cc",
522 "ifaddrs-android.h",
523 ]
524
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000525 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000526 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200527 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000528 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000529 }
530
kjellandera8a7ef62016-04-05 08:13:31 -0700531 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200532 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700533 "maccocoathreadhelper.h",
534 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200535 "macconversion.cc",
536 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700537 "macifaddrs_converter.cc",
538 "scoped_autorelease_pool.h",
539 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200540 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000541 }
542
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000543 if (use_x11) {
544 sources += [
545 "x11windowpicker.cc",
546 "x11windowpicker.h",
547 ]
548 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000549 "dl",
550 "rt",
551 "Xext",
552 "X11",
553 "Xcomposite",
554 "Xrender",
555 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000556 }
557
558 if (is_linux) {
559 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000560 "dl",
561 "rt",
562 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000563 }
564
565 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000566 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000567 "macutils.cc",
568 "macutils.h",
569 ]
kjellander3bcedd32016-06-08 01:14:15 -0700570 libs += [
571 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
572 "ApplicationServices.framework",
573
574 # For GetGestalt in macutils.cc.
575 "CoreServices.framework",
576 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000577 }
578
579 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000580 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000581 "win32.cc",
582 "win32.h",
583 "win32filesystem.cc",
584 "win32filesystem.h",
585 "win32securityerrors.cc",
586 "win32window.cc",
587 "win32window.h",
588 "win32windowpicker.cc",
589 "win32windowpicker.h",
590 "winfirewall.cc",
591 "winfirewall.h",
592 "winping.cc",
593 "winping.h",
594 ]
595
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000596 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000597 "crypt32.lib",
598 "iphlpapi.lib",
599 "secur32.lib",
600 ]
601
602 cflags += [
603 # Suppress warnings about WIN32_LEAN_AND_MEAN.
604 "/wd4005",
605 "/wd4703",
606 ]
607
608 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000609 }
610
kjellandera8a7ef62016-04-05 08:13:31 -0700611 if (is_posix) {
612 sources += [
613 "ifaddrs_converter.cc",
614 "ifaddrs_converter.h",
615 "unixfilesystem.cc",
616 "unixfilesystem.h",
617 ]
618 if (is_debug) {
619 # The Chromium build/common.gypi defines this for all posix
620 # _except_ for ios & mac. We want it there as well, e.g.
621 # because ASSERT and friends trigger off of it.
622 defines += [ "_DEBUG" ]
623 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000624 }
625
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000626 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000627 defines += [ "CARBON_DEPRECATED=YES" ]
628 }
629
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000630 if (is_linux || is_android) {
631 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000632 "linux.cc",
633 "linux.h",
634 ]
635 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700636
637 if (is_nacl) {
638 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
639 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800640 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700641 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000642}
tkchin42f580e2015-11-26 23:18:23 -0800643
kjellander988d31e2016-02-05 00:23:50 -0800644source_set("gtest_prod") {
645 sources = [
646 "gtest_prod_util.h",
647 ]
648}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200649
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200650if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700651 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200652 defines = [ "GTEST_RELATIVE_PATH" ]
653 }
654
kjellander82a94492016-06-12 22:12:01 -0700655 source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200656 testonly = true
657 sources = [
658 # Also use this as a convenient dumping ground for misc files that are
659 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700660 "fakeclock.cc",
661 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200662 "fakenetwork.h",
663 "fakesslidentity.h",
664 "faketaskrunner.h",
665 "gunit.h",
666 "testbase64.h",
667 "testechoserver.h",
668 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700669 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200670 "unittest_main.cc",
671 ]
672 configs += [ "..:common_config" ]
673 public_configs = [
674 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700675 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200676 ]
677 deps = [
678 ":rtc_base",
679 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200680 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200681 ]
682 public_deps = [
683 "//testing/gtest",
684 ]
685 }
686}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200687
688if (is_android) {
689 android_library("base_java") {
690 java_files = [
691 "java/src/org/webrtc/Logging.java",
692 "java/src/org/webrtc/Size.java",
693 "java/src/org/webrtc/ThreadUtils.java",
694 ]
695
696 deps = [
697 "//base:base_java",
698 ]
699 }
700}