blob: bcc6ad901e319a4245003df45d6be908cd9e3d21 [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",
Peter Boström02bafc62016-07-01 12:45:15 +0200140 "race_checker.cc",
141 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800142 "random.cc",
143 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700144 "rate_limiter.cc",
145 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800146 "rate_statistics.cc",
147 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700148 "ratetracker.cc",
149 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800150 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800151 "safe_conversions.h",
152 "safe_conversions_impl.h",
tommi04af8392016-02-14 08:11:10 -0800153 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000154 "stringencode.cc",
155 "stringencode.h",
156 "stringutils.cc",
157 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700158 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700159 "systeminfo.cc",
160 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000161 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000162 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000163 "thread_checker.h",
164 "thread_checker_impl.cc",
165 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700166 "timestampaligner.cc",
167 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000168 "timeutils.cc",
169 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000170 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000171 ]
Noah Richards915590e2015-04-22 15:43:08 -0700172
Peter Boström11e02292015-11-25 21:36:14 +0100173 if (build_with_chromium) {
174 # Dependency on chromium's logging (in //base).
175 deps += [ "//base:base" ]
176 sources += [
177 "../../webrtc_overrides/webrtc/base/logging.cc",
178 "../../webrtc_overrides/webrtc/base/logging.h",
179 ]
180 include_dirs = [ "../../webrtc_overrides" ]
181 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700182 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200183 "logging.cc",
184 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200185 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700186 ]
187 }
tommi09c60da2016-05-24 11:40:35 -0700188}
189
Per33b9c8f2016-07-15 08:25:42 +0200190config("enable_libevent_config") {
191 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
192}
193
tommi09c60da2016-05-24 11:40:35 -0700194static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700195 public_deps = [
196 ":rtc_base_approved",
197 ]
tommi09c60da2016-05-24 11:40:35 -0700198 configs += [ "..:common_config" ]
199
200 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700201 "sequenced_task_checker.h",
202 "sequenced_task_checker_impl.cc",
203 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700204 "task_queue.h",
205 "task_queue_posix.h",
206 ]
tommic06b1332016-05-14 11:31:40 -0700207
phoglundff274392016-05-17 03:44:28 -0700208 if (rtc_build_libevent) {
kjellanderbac04122016-06-02 02:18:48 -0700209 deps = [
210 "//base/third_party/libevent",
211 ]
tommic06b1332016-05-14 11:31:40 -0700212 }
tommi09c60da2016-05-24 11:40:35 -0700213
phoglundff274392016-05-17 03:44:28 -0700214 if (rtc_enable_libevent) {
215 sources += [
216 "task_queue_libevent.cc",
217 "task_queue_posix.cc",
218 ]
Per33b9c8f2016-07-15 08:25:42 +0200219 all_dependent_configs = [ ":enable_libevent_config" ]
phoglundff274392016-05-17 03:44:28 -0700220 } else {
phoglundff274392016-05-17 03:44:28 -0700221 if (is_mac || is_ios) {
222 sources += [
223 "task_queue_gcd.cc",
224 "task_queue_posix.cc",
225 ]
226 }
227 if (is_win) {
228 sources += [ "task_queue_win.cc" ]
229 }
tommic06b1332016-05-14 11:31:40 -0700230 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000231}
232
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000233static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000234 cflags = []
235 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000236 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700237 deps = [
238 "..:webrtc_common",
239 ]
Tommid44c0772016-03-11 17:12:32 -0800240 public_deps = [
241 ":rtc_base_approved",
242 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000243
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000244 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000245 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700246 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000247 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000248 ]
249
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000250 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000251 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700252 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000253 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000254 ]
255
kjellanderb1f14062016-04-25 00:01:36 -0700256 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
257
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200258 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000259
260 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000261 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000262 "asyncfile.cc",
263 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700264 "asyncinvoker-inl.h",
265 "asyncinvoker.cc",
266 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000267 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000268 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000269 "asyncresolverinterface.cc",
270 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000271 "asyncsocket.cc",
272 "asyncsocket.h",
273 "asynctcpsocket.cc",
274 "asynctcpsocket.h",
275 "asyncudpsocket.cc",
276 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000277 "autodetectproxy.cc",
278 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000279 "base64.cc",
280 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000281 "common.cc",
282 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000283 "crc32.cc",
284 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000285 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000287 "diskcache.cc",
288 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700289 "filerotatingstream.cc",
290 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000291 "fileutils.cc",
292 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000293 "firewallsocketserver.cc",
294 "firewallsocketserver.h",
295 "flags.cc",
296 "flags.h",
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +0000297 "format_macros.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000298 "gunit_prod.h",
299 "helpers.cc",
300 "helpers.h",
301 "httpbase.cc",
302 "httpbase.h",
303 "httpclient.cc",
304 "httpclient.h",
305 "httpcommon-inl.h",
306 "httpcommon.cc",
307 "httpcommon.h",
308 "httprequest.cc",
309 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000310 "iosfilesystem.mm",
311 "ipaddress.cc",
312 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000314 "messagedigest.cc",
315 "messagedigest.h",
316 "messagehandler.cc",
317 "messagehandler.h",
318 "messagequeue.cc",
319 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000320 "nethelpers.cc",
321 "nethelpers.h",
322 "network.cc",
323 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700324 "networkmonitor.cc",
325 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700326 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000327 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700328 "openssl.h",
329 "openssladapter.cc",
330 "openssladapter.h",
331 "openssldigest.cc",
332 "openssldigest.h",
333 "opensslidentity.cc",
334 "opensslidentity.h",
335 "opensslstreamadapter.cc",
336 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000337 "pathutils.cc",
338 "pathutils.h",
339 "physicalsocketserver.cc",
340 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000341 "proxydetect.cc",
342 "proxydetect.h",
343 "proxyinfo.cc",
344 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000345 "ratelimiter.cc",
346 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200347 "rtccertificate.cc",
348 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200349 "rtccertificategenerator.cc",
350 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000351 "sha1.cc",
352 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000353 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000354 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800355 "sharedexclusivelock.cc",
356 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000357 "signalthread.cc",
358 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000359 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000360 "sigslot.h",
361 "sigslotrepeater.h",
362 "socket.h",
363 "socketadapters.cc",
364 "socketadapters.h",
365 "socketaddress.cc",
366 "socketaddress.h",
367 "socketaddresspair.cc",
368 "socketaddresspair.h",
369 "socketfactory.h",
370 "socketpool.cc",
371 "socketpool.h",
372 "socketserver.h",
373 "socketstream.cc",
374 "socketstream.h",
375 "ssladapter.cc",
376 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000377 "sslfingerprint.cc",
378 "sslfingerprint.h",
379 "sslidentity.cc",
380 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000381 "sslsocketfactory.cc",
382 "sslsocketfactory.h",
383 "sslstreamadapter.cc",
384 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000385 "stream.cc",
386 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000387 "task.cc",
388 "task.h",
389 "taskparent.cc",
390 "taskparent.h",
391 "taskrunner.cc",
392 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000393 "thread.cc",
394 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000395 "timing.cc",
396 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000397 "urlencode.cc",
398 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000399 "worker.cc",
400 "worker.h",
401 ]
402
403 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000404 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700405 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000406 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000407
408 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700409 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000410 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000411 ]
412
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000413 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000414 } else {
415 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000416 "bandwidthsmoother.cc",
417 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000418 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000419 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000420 "httpserver.cc",
421 "httpserver.h",
422 "json.cc",
423 "json.h",
tkchin93411912015-07-22 12:12:17 -0700424 "logsinks.cc",
425 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000426 "mathutils.h",
427 "multipart.cc",
428 "multipart.h",
429 "natserver.cc",
430 "natserver.h",
431 "natsocketfactory.cc",
432 "natsocketfactory.h",
433 "nattypes.cc",
434 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000435 "optionsfile.cc",
436 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000437 "profiler.cc",
438 "profiler.h",
439 "proxyserver.cc",
440 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000441 "referencecountedsingletonfactory.h",
442 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200443 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000444 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000445 "sslconfig.h",
446 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700447 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000448 "testclient.cc",
449 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000450 "transformadapter.cc",
451 "transformadapter.h",
452 "versionparsing.cc",
453 "versionparsing.h",
454 "virtualsocketserver.cc",
455 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000456 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000457 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200458 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000459 ]
460
kjellandera8a7ef62016-04-05 08:13:31 -0700461 if (is_linux) {
462 sources += [
463 "dbus.cc",
464 "dbus.h",
465 "libdbusglibsymboltable.cc",
466 "libdbusglibsymboltable.h",
467 "linuxfdwalk.c",
468 "linuxfdwalk.h",
469 ]
470 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000471
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000472 if (is_posix) {
473 sources += [
474 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000475 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000476 "posix.cc",
477 "posix.h",
478 ]
479 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000480
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000481 if (is_mac) {
482 sources += [
483 "macasyncsocket.cc",
484 "macasyncsocket.h",
485 "maccocoasocketserver.h",
486 "maccocoasocketserver.mm",
487 "macsocketserver.cc",
488 "macsocketserver.h",
489 "macwindowpicker.cc",
490 "macwindowpicker.h",
491 ]
492 }
493
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000494 if (is_win) {
495 sources += [
496 "diskcache_win32.cc",
497 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000498 "win32regkey.cc",
499 "win32regkey.h",
500 "win32socketinit.cc",
501 "win32socketinit.h",
502 "win32socketserver.cc",
503 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000504 ]
505 }
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000506 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000507 deps += [ "//third_party/jsoncpp" ]
508 } else {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000509 include_dirs += [ rtc_jsoncpp_root ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000510
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000511 # When defined changes the include path for json.h to where it is
512 # expected to be when building json outside of the standalone build.
513 defines += [ "WEBRTC_EXTERNAL_JSON" ]
514 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000515 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000516
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000517 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
kjellander@webrtc.org62711f82014-06-29 13:37:08 +0000518 # compiler settings.
519 configs -= [ "//build/config/compiler:chromium_code" ]
520 configs += [ "//build/config/compiler:no_chromium_code" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000521 if (!is_win) {
522 cflags += [ "-Wno-uninitialized" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000523 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000524
svaldez7f7a8192016-04-18 11:13:11 -0700525 if (rtc_build_ssl) {
526 deps += [ "//third_party/boringssl" ]
527 } else {
528 configs += [ "external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000529 }
530
531 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000532 sources += [
533 "ifaddrs-android.cc",
534 "ifaddrs-android.h",
535 ]
536
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000537 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000538 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200539 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000540 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000541 }
542
kjellandera8a7ef62016-04-05 08:13:31 -0700543 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200544 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700545 "maccocoathreadhelper.h",
546 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200547 "macconversion.cc",
548 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700549 "macifaddrs_converter.cc",
550 "scoped_autorelease_pool.h",
551 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200552 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000553 }
554
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000555 if (use_x11) {
556 sources += [
557 "x11windowpicker.cc",
558 "x11windowpicker.h",
559 ]
560 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000561 "dl",
562 "rt",
563 "Xext",
564 "X11",
565 "Xcomposite",
566 "Xrender",
567 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000568 }
569
570 if (is_linux) {
571 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000572 "dl",
573 "rt",
574 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000575 }
576
577 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000578 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000579 "macutils.cc",
580 "macutils.h",
581 ]
kjellander3bcedd32016-06-08 01:14:15 -0700582 libs += [
583 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
584 "ApplicationServices.framework",
585
586 # For GetGestalt in macutils.cc.
587 "CoreServices.framework",
588 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000589 }
590
591 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000592 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000593 "win32.cc",
594 "win32.h",
595 "win32filesystem.cc",
596 "win32filesystem.h",
597 "win32securityerrors.cc",
598 "win32window.cc",
599 "win32window.h",
600 "win32windowpicker.cc",
601 "win32windowpicker.h",
602 "winfirewall.cc",
603 "winfirewall.h",
604 "winping.cc",
605 "winping.h",
606 ]
607
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000608 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000609 "crypt32.lib",
610 "iphlpapi.lib",
611 "secur32.lib",
612 ]
613
614 cflags += [
615 # Suppress warnings about WIN32_LEAN_AND_MEAN.
616 "/wd4005",
617 "/wd4703",
618 ]
619
620 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000621 }
622
kjellandera8a7ef62016-04-05 08:13:31 -0700623 if (is_posix) {
624 sources += [
625 "ifaddrs_converter.cc",
626 "ifaddrs_converter.h",
627 "unixfilesystem.cc",
628 "unixfilesystem.h",
629 ]
630 if (is_debug) {
631 # The Chromium build/common.gypi defines this for all posix
632 # _except_ for ios & mac. We want it there as well, e.g.
633 # because ASSERT and friends trigger off of it.
634 defines += [ "_DEBUG" ]
635 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000636 }
637
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000638 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000639 defines += [ "CARBON_DEPRECATED=YES" ]
640 }
641
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000642 if (is_linux || is_android) {
643 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000644 "linux.cc",
645 "linux.h",
646 ]
647 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700648
649 if (is_nacl) {
650 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
651 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800652 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700653 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000654}
tkchin42f580e2015-11-26 23:18:23 -0800655
kjellander988d31e2016-02-05 00:23:50 -0800656source_set("gtest_prod") {
657 sources = [
658 "gtest_prod_util.h",
659 ]
660}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200661
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200662if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700663 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200664 defines = [ "GTEST_RELATIVE_PATH" ]
665 }
666
kjellander82a94492016-06-12 22:12:01 -0700667 source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200668 testonly = true
669 sources = [
670 # Also use this as a convenient dumping ground for misc files that are
671 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700672 "fakeclock.cc",
673 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200674 "fakenetwork.h",
675 "fakesslidentity.h",
676 "faketaskrunner.h",
677 "gunit.h",
678 "testbase64.h",
679 "testechoserver.h",
680 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700681 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200682 "unittest_main.cc",
683 ]
684 configs += [ "..:common_config" ]
685 public_configs = [
686 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700687 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200688 ]
689 deps = [
690 ":rtc_base",
691 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200692 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200693 ]
694 public_deps = [
695 "//testing/gtest",
696 ]
697 }
698}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200699
700if (is_android) {
701 android_library("base_java") {
702 java_files = [
703 "java/src/org/webrtc/Logging.java",
704 "java/src/org/webrtc/Size.java",
705 "java/src/org/webrtc/ThreadUtils.java",
706 ]
707
708 deps = [
709 "//base:base_java",
710 ]
711 }
712}