blob: baf6bfd533fa24a7e30fe6cd01bfcb821411da6f [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
kjellanderec5c9062016-08-19 01:07:30 -070084if (!rtc_build_ssl) {
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 = []
aleloi16f55a12016-08-23 08:08:23 -070095 libs = []
Peter Boström11e02292015-11-25 21:36:14 +010096 deps = []
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000097 configs += [ "..:common_config" ]
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +000098 public_configs = [ "..:common_inherited_config" ]
kjellander84ba8b62016-04-24 23:03:07 -070099 all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ]
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000100
101 sources = [
Karl Wiberge2a83ee2015-10-26 19:51:29 +0100102 "array_view.h",
Peter Boströmff019b02015-04-30 14:16:07 +0200103 "atomicops.h",
Tommicc4fdde2016-04-22 19:34:59 +0200104 "bind.h",
Noah Richards915590e2015-04-22 15:43:08 -0700105 "bitbuffer.cc",
106 "bitbuffer.h",
Karl Wiberg94784372015-04-20 14:03:07 +0200107 "buffer.h",
Joachim Bauch6f2ef742015-05-21 17:52:01 +0200108 "bufferqueue.cc",
109 "bufferqueue.h",
Noah Richards915590e2015-04-22 15:43:08 -0700110 "bytebuffer.cc",
111 "bytebuffer.h",
112 "byteorder.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000113 "checks.cc",
114 "checks.h",
Peter Boströmfd5dae32015-11-26 12:54:24 +0100115 "constructormagic.h",
tommiebfbab52016-03-19 11:36:18 -0700116 "copyonwritebuffer.cc",
117 "copyonwritebuffer.h",
Tommi494f2092015-04-27 17:39:23 +0200118 "criticalsection.cc",
119 "criticalsection.h",
kwiberg45fd9fe2015-12-16 01:09:16 -0800120 "deprecation.h",
tommi@webrtc.org4c0fd962015-02-09 10:23:27 +0000121 "event.cc",
122 "event.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000123 "event_tracer.cc",
124 "event_tracer.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000125 "exp_filter.cc",
126 "exp_filter.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700127 "location.cc",
128 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000129 "md5.cc",
130 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000131 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000132 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700133 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700134 "onetimeevent.h",
Karl Wibergbe579832015-11-10 22:34:18 +0100135 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000136 "platform_file.cc",
137 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200138 "platform_thread.cc",
139 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800140 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200141 "race_checker.cc",
142 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800143 "random.cc",
144 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700145 "rate_limiter.cc",
146 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800147 "rate_statistics.cc",
148 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700149 "ratetracker.cc",
150 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800151 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800152 "safe_conversions.h",
153 "safe_conversions_impl.h",
tommi04af8392016-02-14 08:11:10 -0800154 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000155 "stringencode.cc",
156 "stringencode.h",
157 "stringutils.cc",
158 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700159 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700160 "systeminfo.cc",
161 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000162 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000163 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000164 "thread_checker.h",
165 "thread_checker_impl.cc",
166 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700167 "timestampaligner.cc",
168 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000169 "timeutils.cc",
170 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000171 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000172 ]
Noah Richards915590e2015-04-22 15:43:08 -0700173
aleloi16f55a12016-08-23 08:08:23 -0700174 if (is_android) {
175 libs += [ "log" ]
176 }
177
Peter Boström11e02292015-11-25 21:36:14 +0100178 if (build_with_chromium) {
179 # Dependency on chromium's logging (in //base).
180 deps += [ "//base:base" ]
181 sources += [
182 "../../webrtc_overrides/webrtc/base/logging.cc",
183 "../../webrtc_overrides/webrtc/base/logging.h",
184 ]
185 include_dirs = [ "../../webrtc_overrides" ]
186 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700187 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200188 "logging.cc",
189 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200190 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700191 ]
192 }
tommi09c60da2016-05-24 11:40:35 -0700193}
194
Per33b9c8f2016-07-15 08:25:42 +0200195config("enable_libevent_config") {
196 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
197}
198
tommi09c60da2016-05-24 11:40:35 -0700199static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700200 public_deps = [
201 ":rtc_base_approved",
202 ]
tommi09c60da2016-05-24 11:40:35 -0700203 configs += [ "..:common_config" ]
204
205 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700206 "sequenced_task_checker.h",
207 "sequenced_task_checker_impl.cc",
208 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700209 "task_queue.h",
210 "task_queue_posix.h",
211 ]
tommic06b1332016-05-14 11:31:40 -0700212
phoglundff274392016-05-17 03:44:28 -0700213 if (rtc_build_libevent) {
kjellanderbac04122016-06-02 02:18:48 -0700214 deps = [
215 "//base/third_party/libevent",
216 ]
tommic06b1332016-05-14 11:31:40 -0700217 }
tommi09c60da2016-05-24 11:40:35 -0700218
phoglundff274392016-05-17 03:44:28 -0700219 if (rtc_enable_libevent) {
220 sources += [
221 "task_queue_libevent.cc",
222 "task_queue_posix.cc",
223 ]
Per33b9c8f2016-07-15 08:25:42 +0200224 all_dependent_configs = [ ":enable_libevent_config" ]
phoglundff274392016-05-17 03:44:28 -0700225 } else {
phoglundff274392016-05-17 03:44:28 -0700226 if (is_mac || is_ios) {
227 sources += [
228 "task_queue_gcd.cc",
229 "task_queue_posix.cc",
230 ]
231 }
232 if (is_win) {
233 sources += [ "task_queue_win.cc" ]
234 }
tommic06b1332016-05-14 11:31:40 -0700235 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000236}
237
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000238static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000239 cflags = []
240 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000241 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700242 deps = [
243 "..:webrtc_common",
244 ]
Tommid44c0772016-03-11 17:12:32 -0800245 public_deps = [
246 ":rtc_base_approved",
247 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000248
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000249 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000250 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700251 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000252 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000253 ]
254
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000255 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000256 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700257 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000258 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000259 ]
260
kjellanderb1f14062016-04-25 00:01:36 -0700261 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
262
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200263 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000264
265 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000266 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000267 "asyncfile.cc",
268 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700269 "asyncinvoker-inl.h",
270 "asyncinvoker.cc",
271 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000272 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000273 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000274 "asyncresolverinterface.cc",
275 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000276 "asyncsocket.cc",
277 "asyncsocket.h",
278 "asynctcpsocket.cc",
279 "asynctcpsocket.h",
280 "asyncudpsocket.cc",
281 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000282 "autodetectproxy.cc",
283 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000284 "base64.cc",
285 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286 "common.cc",
287 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000288 "crc32.cc",
289 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000290 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000291 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000292 "diskcache.cc",
293 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700294 "filerotatingstream.cc",
295 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000296 "fileutils.cc",
297 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000298 "firewallsocketserver.cc",
299 "firewallsocketserver.h",
300 "flags.cc",
301 "flags.h",
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +0000302 "format_macros.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000303 "gunit_prod.h",
304 "helpers.cc",
305 "helpers.h",
306 "httpbase.cc",
307 "httpbase.h",
308 "httpclient.cc",
309 "httpclient.h",
310 "httpcommon-inl.h",
311 "httpcommon.cc",
312 "httpcommon.h",
313 "httprequest.cc",
314 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000315 "iosfilesystem.mm",
316 "ipaddress.cc",
317 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000318 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000319 "messagedigest.cc",
320 "messagedigest.h",
321 "messagehandler.cc",
322 "messagehandler.h",
323 "messagequeue.cc",
324 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000325 "nethelpers.cc",
326 "nethelpers.h",
327 "network.cc",
328 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700329 "networkmonitor.cc",
330 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700331 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000332 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700333 "openssl.h",
334 "openssladapter.cc",
335 "openssladapter.h",
336 "openssldigest.cc",
337 "openssldigest.h",
338 "opensslidentity.cc",
339 "opensslidentity.h",
340 "opensslstreamadapter.cc",
341 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000342 "pathutils.cc",
343 "pathutils.h",
344 "physicalsocketserver.cc",
345 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000346 "proxydetect.cc",
347 "proxydetect.h",
348 "proxyinfo.cc",
349 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000350 "ratelimiter.cc",
351 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200352 "rtccertificate.cc",
353 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200354 "rtccertificategenerator.cc",
355 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000356 "sha1.cc",
357 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000358 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000359 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800360 "sharedexclusivelock.cc",
361 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000362 "signalthread.cc",
363 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000364 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000365 "sigslot.h",
366 "sigslotrepeater.h",
367 "socket.h",
368 "socketadapters.cc",
369 "socketadapters.h",
370 "socketaddress.cc",
371 "socketaddress.h",
372 "socketaddresspair.cc",
373 "socketaddresspair.h",
374 "socketfactory.h",
375 "socketpool.cc",
376 "socketpool.h",
377 "socketserver.h",
378 "socketstream.cc",
379 "socketstream.h",
380 "ssladapter.cc",
381 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000382 "sslfingerprint.cc",
383 "sslfingerprint.h",
384 "sslidentity.cc",
385 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000386 "sslsocketfactory.cc",
387 "sslsocketfactory.h",
388 "sslstreamadapter.cc",
389 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000390 "stream.cc",
391 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000392 "task.cc",
393 "task.h",
394 "taskparent.cc",
395 "taskparent.h",
396 "taskrunner.cc",
397 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000398 "thread.cc",
399 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000400 "timing.cc",
401 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000402 "urlencode.cc",
403 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000404 "worker.cc",
405 "worker.h",
406 ]
407
408 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000409 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700410 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000411 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000412
413 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700414 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000415 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000416 ]
417
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000418 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000419 } else {
420 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000421 "bandwidthsmoother.cc",
422 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000423 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000424 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000425 "httpserver.cc",
426 "httpserver.h",
427 "json.cc",
428 "json.h",
tkchin93411912015-07-22 12:12:17 -0700429 "logsinks.cc",
430 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000431 "mathutils.h",
432 "multipart.cc",
433 "multipart.h",
434 "natserver.cc",
435 "natserver.h",
436 "natsocketfactory.cc",
437 "natsocketfactory.h",
438 "nattypes.cc",
439 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000440 "optionsfile.cc",
441 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000442 "profiler.cc",
443 "profiler.h",
444 "proxyserver.cc",
445 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000446 "referencecountedsingletonfactory.h",
447 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200448 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000449 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000450 "sslconfig.h",
451 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700452 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000453 "testclient.cc",
454 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000455 "transformadapter.cc",
456 "transformadapter.h",
457 "versionparsing.cc",
458 "versionparsing.h",
459 "virtualsocketserver.cc",
460 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000461 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000462 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200463 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000464 ]
465
kjellandera8a7ef62016-04-05 08:13:31 -0700466 if (is_linux) {
467 sources += [
468 "dbus.cc",
469 "dbus.h",
470 "libdbusglibsymboltable.cc",
471 "libdbusglibsymboltable.h",
472 "linuxfdwalk.c",
473 "linuxfdwalk.h",
474 ]
475 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000476
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000477 if (is_posix) {
478 sources += [
479 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000480 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000481 "posix.cc",
482 "posix.h",
483 ]
484 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000485
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000486 if (is_mac) {
487 sources += [
488 "macasyncsocket.cc",
489 "macasyncsocket.h",
490 "maccocoasocketserver.h",
491 "maccocoasocketserver.mm",
492 "macsocketserver.cc",
493 "macsocketserver.h",
494 "macwindowpicker.cc",
495 "macwindowpicker.h",
496 ]
497 }
498
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000499 if (is_win) {
500 sources += [
501 "diskcache_win32.cc",
502 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000503 "win32regkey.cc",
504 "win32regkey.h",
505 "win32socketinit.cc",
506 "win32socketinit.h",
507 "win32socketserver.cc",
508 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000509 ]
510 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700511 if (is_win && is_clang) {
512 cflags += [
513 # Disable warnings failing when compiling with Clang on Windows.
514 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
515 "-Wno-sign-compare",
516 "-Wno-missing-braces",
517 ]
518 }
519
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000520 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000521 deps += [ "//third_party/jsoncpp" ]
522 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700523 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000524
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000525 # When defined changes the include path for json.h to where it is
526 # expected to be when building json outside of the standalone build.
527 defines += [ "WEBRTC_EXTERNAL_JSON" ]
528 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000529 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000530
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000531 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
kjellander@webrtc.org62711f82014-06-29 13:37:08 +0000532 # compiler settings.
533 configs -= [ "//build/config/compiler:chromium_code" ]
534 configs += [ "//build/config/compiler:no_chromium_code" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000535 if (!is_win) {
536 cflags += [ "-Wno-uninitialized" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000537 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000538
svaldez7f7a8192016-04-18 11:13:11 -0700539 if (rtc_build_ssl) {
540 deps += [ "//third_party/boringssl" ]
541 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700542 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000543 }
544
545 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000546 sources += [
547 "ifaddrs-android.cc",
548 "ifaddrs-android.h",
549 ]
550
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000551 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000552 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200553 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000554 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000555 }
556
kjellandera8a7ef62016-04-05 08:13:31 -0700557 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200558 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700559 "maccocoathreadhelper.h",
560 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200561 "macconversion.cc",
562 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700563 "macifaddrs_converter.cc",
564 "scoped_autorelease_pool.h",
565 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200566 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000567 }
568
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000569 if (use_x11) {
570 sources += [
571 "x11windowpicker.cc",
572 "x11windowpicker.h",
573 ]
574 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000575 "dl",
576 "rt",
577 "Xext",
578 "X11",
579 "Xcomposite",
580 "Xrender",
581 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000582 }
583
584 if (is_linux) {
585 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000586 "dl",
587 "rt",
588 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000589 }
590
591 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000592 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000593 "macutils.cc",
594 "macutils.h",
595 ]
kjellander3bcedd32016-06-08 01:14:15 -0700596 libs += [
597 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
598 "ApplicationServices.framework",
599
600 # For GetGestalt in macutils.cc.
601 "CoreServices.framework",
602 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000603 }
604
605 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000606 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000607 "win32.cc",
608 "win32.h",
609 "win32filesystem.cc",
610 "win32filesystem.h",
611 "win32securityerrors.cc",
612 "win32window.cc",
613 "win32window.h",
614 "win32windowpicker.cc",
615 "win32windowpicker.h",
616 "winfirewall.cc",
617 "winfirewall.h",
618 "winping.cc",
619 "winping.h",
620 ]
621
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000622 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000623 "crypt32.lib",
624 "iphlpapi.lib",
625 "secur32.lib",
626 ]
627
628 cflags += [
629 # Suppress warnings about WIN32_LEAN_AND_MEAN.
630 "/wd4005",
631 "/wd4703",
632 ]
633
634 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000635 }
636
kjellandera8a7ef62016-04-05 08:13:31 -0700637 if (is_posix) {
638 sources += [
639 "ifaddrs_converter.cc",
640 "ifaddrs_converter.h",
641 "unixfilesystem.cc",
642 "unixfilesystem.h",
643 ]
644 if (is_debug) {
645 # The Chromium build/common.gypi defines this for all posix
646 # _except_ for ios & mac. We want it there as well, e.g.
647 # because ASSERT and friends trigger off of it.
648 defines += [ "_DEBUG" ]
649 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000650 }
651
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000652 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000653 defines += [ "CARBON_DEPRECATED=YES" ]
654 }
655
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000656 if (is_linux || is_android) {
657 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000658 "linux.cc",
659 "linux.h",
660 ]
661 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700662
663 if (is_nacl) {
664 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
665 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800666 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700667 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000668}
tkchin42f580e2015-11-26 23:18:23 -0800669
kjellander988d31e2016-02-05 00:23:50 -0800670source_set("gtest_prod") {
671 sources = [
672 "gtest_prod_util.h",
673 ]
674}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200675
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200676if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700677 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200678 defines = [ "GTEST_RELATIVE_PATH" ]
679 }
680
kjellander82a94492016-06-12 22:12:01 -0700681 source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200682 testonly = true
683 sources = [
684 # Also use this as a convenient dumping ground for misc files that are
685 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700686 "fakeclock.cc",
687 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200688 "fakenetwork.h",
689 "fakesslidentity.h",
690 "faketaskrunner.h",
691 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700692 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200693 "testbase64.h",
694 "testechoserver.h",
695 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700696 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200697 "unittest_main.cc",
698 ]
699 configs += [ "..:common_config" ]
700 public_configs = [
701 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700702 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200703 ]
704 deps = [
705 ":rtc_base",
706 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200707 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200708 ]
709 public_deps = [
710 "//testing/gtest",
711 ]
712 }
713}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200714
715if (is_android) {
716 android_library("base_java") {
717 java_files = [
718 "java/src/org/webrtc/Logging.java",
719 "java/src/org/webrtc/Size.java",
720 "java/src/org/webrtc/ThreadUtils.java",
721 ]
722
723 deps = [
724 "//base:base_java",
725 ]
726 }
727}