blob: cd4bc1fe43d1a47cf41cf9dfb536d160b97e06d5 [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",
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",
tommi04af8392016-02-14 08:11:10 -0800151 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000152 "stringencode.cc",
153 "stringencode.h",
154 "stringutils.cc",
155 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700156 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700157 "systeminfo.cc",
158 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000159 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000160 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000161 "thread_checker.h",
162 "thread_checker_impl.cc",
163 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700164 "timestampaligner.cc",
165 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000166 "timeutils.cc",
167 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000168 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000169 ]
Noah Richards915590e2015-04-22 15:43:08 -0700170
Peter Boström11e02292015-11-25 21:36:14 +0100171 if (build_with_chromium) {
172 # Dependency on chromium's logging (in //base).
173 deps += [ "//base:base" ]
174 sources += [
175 "../../webrtc_overrides/webrtc/base/logging.cc",
176 "../../webrtc_overrides/webrtc/base/logging.h",
177 ]
178 include_dirs = [ "../../webrtc_overrides" ]
179 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700180 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200181 "logging.cc",
182 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200183 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700184 ]
185 }
tommi09c60da2016-05-24 11:40:35 -0700186}
187
188static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700189 public_deps = [
190 ":rtc_base_approved",
191 ]
tommi09c60da2016-05-24 11:40:35 -0700192 configs += [ "..:common_config" ]
193
194 sources = [
195 "task_queue.h",
196 "task_queue_posix.h",
197 ]
tommic06b1332016-05-14 11:31:40 -0700198
phoglundff274392016-05-17 03:44:28 -0700199 if (rtc_build_libevent) {
kjellanderbac04122016-06-02 02:18:48 -0700200 deps = [
201 "//base/third_party/libevent",
202 ]
tommic06b1332016-05-14 11:31:40 -0700203 }
tommi09c60da2016-05-24 11:40:35 -0700204
phoglundff274392016-05-17 03:44:28 -0700205 if (rtc_enable_libevent) {
206 sources += [
207 "task_queue_libevent.cc",
208 "task_queue_posix.cc",
209 ]
210 } else {
phoglundff274392016-05-17 03:44:28 -0700211 if (is_mac || is_ios) {
212 sources += [
213 "task_queue_gcd.cc",
214 "task_queue_posix.cc",
215 ]
216 }
217 if (is_win) {
218 sources += [ "task_queue_win.cc" ]
219 }
tommic06b1332016-05-14 11:31:40 -0700220 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000221}
222
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000223static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000224 cflags = []
225 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000226 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700227 deps = [
228 "..:webrtc_common",
229 ]
Tommid44c0772016-03-11 17:12:32 -0800230 public_deps = [
231 ":rtc_base_approved",
232 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000233
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000234 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000235 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700236 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000237 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000238 ]
239
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000240 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000241 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700242 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000243 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000244 ]
245
kjellanderb1f14062016-04-25 00:01:36 -0700246 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
247
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200248 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000249
250 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000251 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000252 "asyncfile.cc",
253 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700254 "asyncinvoker-inl.h",
255 "asyncinvoker.cc",
256 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000257 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000258 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000259 "asyncresolverinterface.cc",
260 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000261 "asyncsocket.cc",
262 "asyncsocket.h",
263 "asynctcpsocket.cc",
264 "asynctcpsocket.h",
265 "asyncudpsocket.cc",
266 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000267 "autodetectproxy.cc",
268 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000269 "base64.cc",
270 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000271 "common.cc",
272 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000273 "crc32.cc",
274 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000275 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000276 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000277 "diskcache.cc",
278 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700279 "filerotatingstream.cc",
280 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000281 "fileutils.cc",
282 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000283 "firewallsocketserver.cc",
284 "firewallsocketserver.h",
285 "flags.cc",
286 "flags.h",
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +0000287 "format_macros.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000288 "gunit_prod.h",
289 "helpers.cc",
290 "helpers.h",
291 "httpbase.cc",
292 "httpbase.h",
293 "httpclient.cc",
294 "httpclient.h",
295 "httpcommon-inl.h",
296 "httpcommon.cc",
297 "httpcommon.h",
298 "httprequest.cc",
299 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000300 "iosfilesystem.mm",
301 "ipaddress.cc",
302 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000303 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000304 "messagedigest.cc",
305 "messagedigest.h",
306 "messagehandler.cc",
307 "messagehandler.h",
308 "messagequeue.cc",
309 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000310 "nethelpers.cc",
311 "nethelpers.h",
312 "network.cc",
313 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700314 "networkmonitor.cc",
315 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700316 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000317 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700318 "openssl.h",
319 "openssladapter.cc",
320 "openssladapter.h",
321 "openssldigest.cc",
322 "openssldigest.h",
323 "opensslidentity.cc",
324 "opensslidentity.h",
325 "opensslstreamadapter.cc",
326 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000327 "pathutils.cc",
328 "pathutils.h",
329 "physicalsocketserver.cc",
330 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000331 "proxydetect.cc",
332 "proxydetect.h",
333 "proxyinfo.cc",
334 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000335 "ratelimiter.cc",
336 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200337 "rtccertificate.cc",
338 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200339 "rtccertificategenerator.cc",
340 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000341 "sha1.cc",
342 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000343 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000344 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800345 "sharedexclusivelock.cc",
346 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000347 "signalthread.cc",
348 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000349 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000350 "sigslot.h",
351 "sigslotrepeater.h",
352 "socket.h",
353 "socketadapters.cc",
354 "socketadapters.h",
355 "socketaddress.cc",
356 "socketaddress.h",
357 "socketaddresspair.cc",
358 "socketaddresspair.h",
359 "socketfactory.h",
360 "socketpool.cc",
361 "socketpool.h",
362 "socketserver.h",
363 "socketstream.cc",
364 "socketstream.h",
365 "ssladapter.cc",
366 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000367 "sslfingerprint.cc",
368 "sslfingerprint.h",
369 "sslidentity.cc",
370 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000371 "sslsocketfactory.cc",
372 "sslsocketfactory.h",
373 "sslstreamadapter.cc",
374 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000375 "stream.cc",
376 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000377 "task.cc",
378 "task.h",
379 "taskparent.cc",
380 "taskparent.h",
381 "taskrunner.cc",
382 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000383 "thread.cc",
384 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000385 "timing.cc",
386 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000387 "urlencode.cc",
388 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000389 "worker.cc",
390 "worker.h",
391 ]
392
393 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000394 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700395 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000396 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000397
398 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700399 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000400 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000401 ]
402
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000403 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000404 } else {
405 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000406 "bandwidthsmoother.cc",
407 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000408 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000409 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000410 "httpserver.cc",
411 "httpserver.h",
412 "json.cc",
413 "json.h",
tkchin93411912015-07-22 12:12:17 -0700414 "logsinks.cc",
415 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000416 "mathutils.h",
417 "multipart.cc",
418 "multipart.h",
419 "natserver.cc",
420 "natserver.h",
421 "natsocketfactory.cc",
422 "natsocketfactory.h",
423 "nattypes.cc",
424 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000425 "optionsfile.cc",
426 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000427 "profiler.cc",
428 "profiler.h",
429 "proxyserver.cc",
430 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000431 "referencecountedsingletonfactory.h",
432 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200433 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000434 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000435 "sslconfig.h",
436 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700437 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000438 "testclient.cc",
439 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000440 "transformadapter.cc",
441 "transformadapter.h",
442 "versionparsing.cc",
443 "versionparsing.h",
444 "virtualsocketserver.cc",
445 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000446 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000447 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200448 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000449 ]
450
kjellandera8a7ef62016-04-05 08:13:31 -0700451 if (is_linux) {
452 sources += [
453 "dbus.cc",
454 "dbus.h",
455 "libdbusglibsymboltable.cc",
456 "libdbusglibsymboltable.h",
457 "linuxfdwalk.c",
458 "linuxfdwalk.h",
459 ]
460 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000461
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000462 if (is_posix) {
463 sources += [
464 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000465 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000466 "posix.cc",
467 "posix.h",
468 ]
469 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000470
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000471 if (is_mac) {
472 sources += [
473 "macasyncsocket.cc",
474 "macasyncsocket.h",
475 "maccocoasocketserver.h",
476 "maccocoasocketserver.mm",
477 "macsocketserver.cc",
478 "macsocketserver.h",
479 "macwindowpicker.cc",
480 "macwindowpicker.h",
481 ]
482 }
483
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000484 if (is_win) {
485 sources += [
486 "diskcache_win32.cc",
487 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000488 "win32regkey.cc",
489 "win32regkey.h",
490 "win32socketinit.cc",
491 "win32socketinit.h",
492 "win32socketserver.cc",
493 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000494 ]
495 }
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000496 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000497 deps += [ "//third_party/jsoncpp" ]
498 } else {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000499 include_dirs += [ rtc_jsoncpp_root ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000500
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000501 # When defined changes the include path for json.h to where it is
502 # expected to be when building json outside of the standalone build.
503 defines += [ "WEBRTC_EXTERNAL_JSON" ]
504 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000505 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000506
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000507 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
kjellander@webrtc.org62711f82014-06-29 13:37:08 +0000508 # compiler settings.
509 configs -= [ "//build/config/compiler:chromium_code" ]
510 configs += [ "//build/config/compiler:no_chromium_code" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000511 if (!is_win) {
512 cflags += [ "-Wno-uninitialized" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000513 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000514
svaldez7f7a8192016-04-18 11:13:11 -0700515 if (rtc_build_ssl) {
516 deps += [ "//third_party/boringssl" ]
517 } else {
518 configs += [ "external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000519 }
520
521 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000522 sources += [
523 "ifaddrs-android.cc",
524 "ifaddrs-android.h",
525 ]
526
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000527 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000528 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200529 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000530 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000531 }
532
kjellandera8a7ef62016-04-05 08:13:31 -0700533 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200534 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700535 "maccocoathreadhelper.h",
536 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200537 "macconversion.cc",
538 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700539 "macifaddrs_converter.cc",
540 "scoped_autorelease_pool.h",
541 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200542 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000543 }
544
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000545 if (use_x11) {
546 sources += [
547 "x11windowpicker.cc",
548 "x11windowpicker.h",
549 ]
550 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000551 "dl",
552 "rt",
553 "Xext",
554 "X11",
555 "Xcomposite",
556 "Xrender",
557 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000558 }
559
560 if (is_linux) {
561 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000562 "dl",
563 "rt",
564 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000565 }
566
567 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000568 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000569 "macutils.cc",
570 "macutils.h",
571 ]
kjellander3bcedd32016-06-08 01:14:15 -0700572 libs += [
573 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
574 "ApplicationServices.framework",
575
576 # For GetGestalt in macutils.cc.
577 "CoreServices.framework",
578 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000579 }
580
581 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000582 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000583 "win32.cc",
584 "win32.h",
585 "win32filesystem.cc",
586 "win32filesystem.h",
587 "win32securityerrors.cc",
588 "win32window.cc",
589 "win32window.h",
590 "win32windowpicker.cc",
591 "win32windowpicker.h",
592 "winfirewall.cc",
593 "winfirewall.h",
594 "winping.cc",
595 "winping.h",
596 ]
597
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000598 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000599 "crypt32.lib",
600 "iphlpapi.lib",
601 "secur32.lib",
602 ]
603
604 cflags += [
605 # Suppress warnings about WIN32_LEAN_AND_MEAN.
606 "/wd4005",
607 "/wd4703",
608 ]
609
610 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000611 }
612
kjellandera8a7ef62016-04-05 08:13:31 -0700613 if (is_posix) {
614 sources += [
615 "ifaddrs_converter.cc",
616 "ifaddrs_converter.h",
617 "unixfilesystem.cc",
618 "unixfilesystem.h",
619 ]
620 if (is_debug) {
621 # The Chromium build/common.gypi defines this for all posix
622 # _except_ for ios & mac. We want it there as well, e.g.
623 # because ASSERT and friends trigger off of it.
624 defines += [ "_DEBUG" ]
625 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000626 }
627
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000628 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000629 defines += [ "CARBON_DEPRECATED=YES" ]
630 }
631
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000632 if (is_linux || is_android) {
633 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000634 "linux.cc",
635 "linux.h",
636 ]
637 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700638
639 if (is_nacl) {
640 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
641 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800642 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700643 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000644}
tkchin42f580e2015-11-26 23:18:23 -0800645
kjellander988d31e2016-02-05 00:23:50 -0800646source_set("gtest_prod") {
647 sources = [
648 "gtest_prod_util.h",
649 ]
650}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200651
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200652if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700653 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200654 defines = [ "GTEST_RELATIVE_PATH" ]
655 }
656
kjellander82a94492016-06-12 22:12:01 -0700657 source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200658 testonly = true
659 sources = [
660 # Also use this as a convenient dumping ground for misc files that are
661 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700662 "fakeclock.cc",
663 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200664 "fakenetwork.h",
665 "fakesslidentity.h",
666 "faketaskrunner.h",
667 "gunit.h",
668 "testbase64.h",
669 "testechoserver.h",
670 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700671 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200672 "unittest_main.cc",
673 ]
674 configs += [ "..:common_config" ]
675 public_configs = [
676 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700677 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200678 ]
679 deps = [
680 ":rtc_base",
681 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200682 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200683 ]
684 public_deps = [
685 "//testing/gtest",
686 ]
687 }
688}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200689
690if (is_android) {
691 android_library("base_java") {
692 java_files = [
693 "java/src/org/webrtc/Logging.java",
694 "java/src/org/webrtc/Size.java",
695 "java/src/org/webrtc/ThreadUtils.java",
696 ]
697
698 deps = [
699 "//base:base_java",
700 ]
701 }
702}