blob: e7ed156ade9d9cbf12591db69791af8137d6d280 [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
190static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700191 public_deps = [
192 ":rtc_base_approved",
193 ]
tommi09c60da2016-05-24 11:40:35 -0700194 configs += [ "..:common_config" ]
195
196 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700197 "sequenced_task_checker.h",
198 "sequenced_task_checker_impl.cc",
199 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700200 "task_queue.h",
201 "task_queue_posix.h",
202 ]
tommic06b1332016-05-14 11:31:40 -0700203
phoglundff274392016-05-17 03:44:28 -0700204 if (rtc_build_libevent) {
kjellanderbac04122016-06-02 02:18:48 -0700205 deps = [
206 "//base/third_party/libevent",
207 ]
tommic06b1332016-05-14 11:31:40 -0700208 }
tommi09c60da2016-05-24 11:40:35 -0700209
phoglundff274392016-05-17 03:44:28 -0700210 if (rtc_enable_libevent) {
211 sources += [
212 "task_queue_libevent.cc",
213 "task_queue_posix.cc",
214 ]
215 } else {
phoglundff274392016-05-17 03:44:28 -0700216 if (is_mac || is_ios) {
217 sources += [
218 "task_queue_gcd.cc",
219 "task_queue_posix.cc",
220 ]
221 }
222 if (is_win) {
223 sources += [ "task_queue_win.cc" ]
224 }
tommic06b1332016-05-14 11:31:40 -0700225 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000226}
227
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000228static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000229 cflags = []
230 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000231 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700232 deps = [
233 "..:webrtc_common",
234 ]
Tommid44c0772016-03-11 17:12:32 -0800235 public_deps = [
236 ":rtc_base_approved",
237 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000238
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000239 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000240 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700241 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000242 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000243 ]
244
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000245 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000246 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700247 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000248 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000249 ]
250
kjellanderb1f14062016-04-25 00:01:36 -0700251 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
252
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200253 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000254
255 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000256 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000257 "asyncfile.cc",
258 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700259 "asyncinvoker-inl.h",
260 "asyncinvoker.cc",
261 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000262 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000263 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000264 "asyncresolverinterface.cc",
265 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000266 "asyncsocket.cc",
267 "asyncsocket.h",
268 "asynctcpsocket.cc",
269 "asynctcpsocket.h",
270 "asyncudpsocket.cc",
271 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000272 "autodetectproxy.cc",
273 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000274 "base64.cc",
275 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000276 "common.cc",
277 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000278 "crc32.cc",
279 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000280 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000281 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000282 "diskcache.cc",
283 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700284 "filerotatingstream.cc",
285 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286 "fileutils.cc",
287 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000288 "firewallsocketserver.cc",
289 "firewallsocketserver.h",
290 "flags.cc",
291 "flags.h",
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +0000292 "format_macros.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000293 "gunit_prod.h",
294 "helpers.cc",
295 "helpers.h",
296 "httpbase.cc",
297 "httpbase.h",
298 "httpclient.cc",
299 "httpclient.h",
300 "httpcommon-inl.h",
301 "httpcommon.cc",
302 "httpcommon.h",
303 "httprequest.cc",
304 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000305 "iosfilesystem.mm",
306 "ipaddress.cc",
307 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000308 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000309 "messagedigest.cc",
310 "messagedigest.h",
311 "messagehandler.cc",
312 "messagehandler.h",
313 "messagequeue.cc",
314 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000315 "nethelpers.cc",
316 "nethelpers.h",
317 "network.cc",
318 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700319 "networkmonitor.cc",
320 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700321 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000322 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700323 "openssl.h",
324 "openssladapter.cc",
325 "openssladapter.h",
326 "openssldigest.cc",
327 "openssldigest.h",
328 "opensslidentity.cc",
329 "opensslidentity.h",
330 "opensslstreamadapter.cc",
331 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000332 "pathutils.cc",
333 "pathutils.h",
334 "physicalsocketserver.cc",
335 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000336 "proxydetect.cc",
337 "proxydetect.h",
338 "proxyinfo.cc",
339 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000340 "ratelimiter.cc",
341 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200342 "rtccertificate.cc",
343 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200344 "rtccertificategenerator.cc",
345 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000346 "sha1.cc",
347 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000348 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000349 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800350 "sharedexclusivelock.cc",
351 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000352 "signalthread.cc",
353 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000354 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000355 "sigslot.h",
356 "sigslotrepeater.h",
357 "socket.h",
358 "socketadapters.cc",
359 "socketadapters.h",
360 "socketaddress.cc",
361 "socketaddress.h",
362 "socketaddresspair.cc",
363 "socketaddresspair.h",
364 "socketfactory.h",
365 "socketpool.cc",
366 "socketpool.h",
367 "socketserver.h",
368 "socketstream.cc",
369 "socketstream.h",
370 "ssladapter.cc",
371 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000372 "sslfingerprint.cc",
373 "sslfingerprint.h",
374 "sslidentity.cc",
375 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000376 "sslsocketfactory.cc",
377 "sslsocketfactory.h",
378 "sslstreamadapter.cc",
379 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000380 "stream.cc",
381 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000382 "task.cc",
383 "task.h",
384 "taskparent.cc",
385 "taskparent.h",
386 "taskrunner.cc",
387 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000388 "thread.cc",
389 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000390 "timing.cc",
391 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000392 "urlencode.cc",
393 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000394 "worker.cc",
395 "worker.h",
396 ]
397
398 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000399 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700400 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000401 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000402
403 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700404 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000405 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000406 ]
407
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000408 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000409 } else {
410 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000411 "bandwidthsmoother.cc",
412 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000413 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000414 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000415 "httpserver.cc",
416 "httpserver.h",
417 "json.cc",
418 "json.h",
tkchin93411912015-07-22 12:12:17 -0700419 "logsinks.cc",
420 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000421 "mathutils.h",
422 "multipart.cc",
423 "multipart.h",
424 "natserver.cc",
425 "natserver.h",
426 "natsocketfactory.cc",
427 "natsocketfactory.h",
428 "nattypes.cc",
429 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000430 "optionsfile.cc",
431 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000432 "profiler.cc",
433 "profiler.h",
434 "proxyserver.cc",
435 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000436 "referencecountedsingletonfactory.h",
437 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200438 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000439 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000440 "sslconfig.h",
441 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700442 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000443 "testclient.cc",
444 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000445 "transformadapter.cc",
446 "transformadapter.h",
447 "versionparsing.cc",
448 "versionparsing.h",
449 "virtualsocketserver.cc",
450 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000451 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000452 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200453 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000454 ]
455
kjellandera8a7ef62016-04-05 08:13:31 -0700456 if (is_linux) {
457 sources += [
458 "dbus.cc",
459 "dbus.h",
460 "libdbusglibsymboltable.cc",
461 "libdbusglibsymboltable.h",
462 "linuxfdwalk.c",
463 "linuxfdwalk.h",
464 ]
465 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000466
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000467 if (is_posix) {
468 sources += [
469 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000470 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000471 "posix.cc",
472 "posix.h",
473 ]
474 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000475
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000476 if (is_mac) {
477 sources += [
478 "macasyncsocket.cc",
479 "macasyncsocket.h",
480 "maccocoasocketserver.h",
481 "maccocoasocketserver.mm",
482 "macsocketserver.cc",
483 "macsocketserver.h",
484 "macwindowpicker.cc",
485 "macwindowpicker.h",
486 ]
487 }
488
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000489 if (is_win) {
490 sources += [
491 "diskcache_win32.cc",
492 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000493 "win32regkey.cc",
494 "win32regkey.h",
495 "win32socketinit.cc",
496 "win32socketinit.h",
497 "win32socketserver.cc",
498 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000499 ]
500 }
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000501 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000502 deps += [ "//third_party/jsoncpp" ]
503 } else {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000504 include_dirs += [ rtc_jsoncpp_root ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000505
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000506 # When defined changes the include path for json.h to where it is
507 # expected to be when building json outside of the standalone build.
508 defines += [ "WEBRTC_EXTERNAL_JSON" ]
509 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000510 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000511
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000512 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
kjellander@webrtc.org62711f82014-06-29 13:37:08 +0000513 # compiler settings.
514 configs -= [ "//build/config/compiler:chromium_code" ]
515 configs += [ "//build/config/compiler:no_chromium_code" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000516 if (!is_win) {
517 cflags += [ "-Wno-uninitialized" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000518 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000519
svaldez7f7a8192016-04-18 11:13:11 -0700520 if (rtc_build_ssl) {
521 deps += [ "//third_party/boringssl" ]
522 } else {
523 configs += [ "external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000524 }
525
526 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000527 sources += [
528 "ifaddrs-android.cc",
529 "ifaddrs-android.h",
530 ]
531
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000532 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000533 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200534 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000535 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000536 }
537
kjellandera8a7ef62016-04-05 08:13:31 -0700538 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200539 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700540 "maccocoathreadhelper.h",
541 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200542 "macconversion.cc",
543 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700544 "macifaddrs_converter.cc",
545 "scoped_autorelease_pool.h",
546 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200547 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000548 }
549
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000550 if (use_x11) {
551 sources += [
552 "x11windowpicker.cc",
553 "x11windowpicker.h",
554 ]
555 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000556 "dl",
557 "rt",
558 "Xext",
559 "X11",
560 "Xcomposite",
561 "Xrender",
562 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000563 }
564
565 if (is_linux) {
566 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000567 "dl",
568 "rt",
569 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000570 }
571
572 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000573 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000574 "macutils.cc",
575 "macutils.h",
576 ]
kjellander3bcedd32016-06-08 01:14:15 -0700577 libs += [
578 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
579 "ApplicationServices.framework",
580
581 # For GetGestalt in macutils.cc.
582 "CoreServices.framework",
583 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000584 }
585
586 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000587 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000588 "win32.cc",
589 "win32.h",
590 "win32filesystem.cc",
591 "win32filesystem.h",
592 "win32securityerrors.cc",
593 "win32window.cc",
594 "win32window.h",
595 "win32windowpicker.cc",
596 "win32windowpicker.h",
597 "winfirewall.cc",
598 "winfirewall.h",
599 "winping.cc",
600 "winping.h",
601 ]
602
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000603 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000604 "crypt32.lib",
605 "iphlpapi.lib",
606 "secur32.lib",
607 ]
608
609 cflags += [
610 # Suppress warnings about WIN32_LEAN_AND_MEAN.
611 "/wd4005",
612 "/wd4703",
613 ]
614
615 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000616 }
617
kjellandera8a7ef62016-04-05 08:13:31 -0700618 if (is_posix) {
619 sources += [
620 "ifaddrs_converter.cc",
621 "ifaddrs_converter.h",
622 "unixfilesystem.cc",
623 "unixfilesystem.h",
624 ]
625 if (is_debug) {
626 # The Chromium build/common.gypi defines this for all posix
627 # _except_ for ios & mac. We want it there as well, e.g.
628 # because ASSERT and friends trigger off of it.
629 defines += [ "_DEBUG" ]
630 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000631 }
632
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000633 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000634 defines += [ "CARBON_DEPRECATED=YES" ]
635 }
636
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000637 if (is_linux || is_android) {
638 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000639 "linux.cc",
640 "linux.h",
641 ]
642 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700643
644 if (is_nacl) {
645 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
646 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800647 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700648 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000649}
tkchin42f580e2015-11-26 23:18:23 -0800650
kjellander988d31e2016-02-05 00:23:50 -0800651source_set("gtest_prod") {
652 sources = [
653 "gtest_prod_util.h",
654 ]
655}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200656
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200657if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700658 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200659 defines = [ "GTEST_RELATIVE_PATH" ]
660 }
661
kjellander82a94492016-06-12 22:12:01 -0700662 source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200663 testonly = true
664 sources = [
665 # Also use this as a convenient dumping ground for misc files that are
666 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700667 "fakeclock.cc",
668 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200669 "fakenetwork.h",
670 "fakesslidentity.h",
671 "faketaskrunner.h",
672 "gunit.h",
673 "testbase64.h",
674 "testechoserver.h",
675 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700676 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200677 "unittest_main.cc",
678 ]
679 configs += [ "..:common_config" ]
680 public_configs = [
681 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700682 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200683 ]
684 deps = [
685 ":rtc_base",
686 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200687 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200688 ]
689 public_deps = [
690 "//testing/gtest",
691 ]
692 }
693}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200694
695if (is_android) {
696 android_library("base_java") {
697 java_files = [
698 "java/src/org/webrtc/Logging.java",
699 "java/src/org/webrtc/Size.java",
700 "java/src/org/webrtc/ThreadUtils.java",
701 ]
702
703 deps = [
704 "//base:base_java",
705 ]
706 }
707}