blob: 621a57bf4933cc4244d84d7af059814d2cfd1a46 [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 = [
perkj9c16fe82016-07-12 15:04:07 -0700195 "sequenced_task_checker.h",
196 "sequenced_task_checker_impl.cc",
197 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700198 "task_queue.h",
199 "task_queue_posix.h",
200 ]
tommic06b1332016-05-14 11:31:40 -0700201
phoglundff274392016-05-17 03:44:28 -0700202 if (rtc_build_libevent) {
kjellanderbac04122016-06-02 02:18:48 -0700203 deps = [
204 "//base/third_party/libevent",
205 ]
tommic06b1332016-05-14 11:31:40 -0700206 }
tommi09c60da2016-05-24 11:40:35 -0700207
phoglundff274392016-05-17 03:44:28 -0700208 if (rtc_enable_libevent) {
209 sources += [
210 "task_queue_libevent.cc",
211 "task_queue_posix.cc",
212 ]
213 } else {
phoglundff274392016-05-17 03:44:28 -0700214 if (is_mac || is_ios) {
215 sources += [
216 "task_queue_gcd.cc",
217 "task_queue_posix.cc",
218 ]
219 }
220 if (is_win) {
221 sources += [ "task_queue_win.cc" ]
222 }
tommic06b1332016-05-14 11:31:40 -0700223 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000224}
225
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000226static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000227 cflags = []
228 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000229 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700230 deps = [
231 "..:webrtc_common",
232 ]
Tommid44c0772016-03-11 17:12:32 -0800233 public_deps = [
234 ":rtc_base_approved",
235 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000236
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000237 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000238 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700239 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000240 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000241 ]
242
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000243 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000244 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700245 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000246 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000247 ]
248
kjellanderb1f14062016-04-25 00:01:36 -0700249 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
250
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200251 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000252
253 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000254 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000255 "asyncfile.cc",
256 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700257 "asyncinvoker-inl.h",
258 "asyncinvoker.cc",
259 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000260 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000261 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000262 "asyncresolverinterface.cc",
263 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000264 "asyncsocket.cc",
265 "asyncsocket.h",
266 "asynctcpsocket.cc",
267 "asynctcpsocket.h",
268 "asyncudpsocket.cc",
269 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000270 "autodetectproxy.cc",
271 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000272 "base64.cc",
273 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000274 "common.cc",
275 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000276 "crc32.cc",
277 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000278 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000279 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000280 "diskcache.cc",
281 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700282 "filerotatingstream.cc",
283 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000284 "fileutils.cc",
285 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286 "firewallsocketserver.cc",
287 "firewallsocketserver.h",
288 "flags.cc",
289 "flags.h",
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +0000290 "format_macros.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000291 "gunit_prod.h",
292 "helpers.cc",
293 "helpers.h",
294 "httpbase.cc",
295 "httpbase.h",
296 "httpclient.cc",
297 "httpclient.h",
298 "httpcommon-inl.h",
299 "httpcommon.cc",
300 "httpcommon.h",
301 "httprequest.cc",
302 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000303 "iosfilesystem.mm",
304 "ipaddress.cc",
305 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000306 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000307 "messagedigest.cc",
308 "messagedigest.h",
309 "messagehandler.cc",
310 "messagehandler.h",
311 "messagequeue.cc",
312 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "nethelpers.cc",
314 "nethelpers.h",
315 "network.cc",
316 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700317 "networkmonitor.cc",
318 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700319 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000320 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700321 "openssl.h",
322 "openssladapter.cc",
323 "openssladapter.h",
324 "openssldigest.cc",
325 "openssldigest.h",
326 "opensslidentity.cc",
327 "opensslidentity.h",
328 "opensslstreamadapter.cc",
329 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000330 "pathutils.cc",
331 "pathutils.h",
332 "physicalsocketserver.cc",
333 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000334 "proxydetect.cc",
335 "proxydetect.h",
336 "proxyinfo.cc",
337 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000338 "ratelimiter.cc",
339 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200340 "rtccertificate.cc",
341 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200342 "rtccertificategenerator.cc",
343 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000344 "sha1.cc",
345 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000346 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000347 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800348 "sharedexclusivelock.cc",
349 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000350 "signalthread.cc",
351 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000352 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000353 "sigslot.h",
354 "sigslotrepeater.h",
355 "socket.h",
356 "socketadapters.cc",
357 "socketadapters.h",
358 "socketaddress.cc",
359 "socketaddress.h",
360 "socketaddresspair.cc",
361 "socketaddresspair.h",
362 "socketfactory.h",
363 "socketpool.cc",
364 "socketpool.h",
365 "socketserver.h",
366 "socketstream.cc",
367 "socketstream.h",
368 "ssladapter.cc",
369 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000370 "sslfingerprint.cc",
371 "sslfingerprint.h",
372 "sslidentity.cc",
373 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000374 "sslsocketfactory.cc",
375 "sslsocketfactory.h",
376 "sslstreamadapter.cc",
377 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000378 "stream.cc",
379 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000380 "task.cc",
381 "task.h",
382 "taskparent.cc",
383 "taskparent.h",
384 "taskrunner.cc",
385 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000386 "thread.cc",
387 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000388 "timing.cc",
389 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000390 "urlencode.cc",
391 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000392 "worker.cc",
393 "worker.h",
394 ]
395
396 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000397 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700398 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000399 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000400
401 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700402 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000403 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000404 ]
405
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000406 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000407 } else {
408 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000409 "bandwidthsmoother.cc",
410 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000411 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000412 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000413 "httpserver.cc",
414 "httpserver.h",
415 "json.cc",
416 "json.h",
tkchin93411912015-07-22 12:12:17 -0700417 "logsinks.cc",
418 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000419 "mathutils.h",
420 "multipart.cc",
421 "multipart.h",
422 "natserver.cc",
423 "natserver.h",
424 "natsocketfactory.cc",
425 "natsocketfactory.h",
426 "nattypes.cc",
427 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000428 "optionsfile.cc",
429 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000430 "profiler.cc",
431 "profiler.h",
432 "proxyserver.cc",
433 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000434 "referencecountedsingletonfactory.h",
435 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200436 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000437 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000438 "sslconfig.h",
439 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700440 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000441 "testclient.cc",
442 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000443 "transformadapter.cc",
444 "transformadapter.h",
445 "versionparsing.cc",
446 "versionparsing.h",
447 "virtualsocketserver.cc",
448 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000449 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000450 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200451 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000452 ]
453
kjellandera8a7ef62016-04-05 08:13:31 -0700454 if (is_linux) {
455 sources += [
456 "dbus.cc",
457 "dbus.h",
458 "libdbusglibsymboltable.cc",
459 "libdbusglibsymboltable.h",
460 "linuxfdwalk.c",
461 "linuxfdwalk.h",
462 ]
463 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000464
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000465 if (is_posix) {
466 sources += [
467 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000468 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000469 "posix.cc",
470 "posix.h",
471 ]
472 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000473
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000474 if (is_mac) {
475 sources += [
476 "macasyncsocket.cc",
477 "macasyncsocket.h",
478 "maccocoasocketserver.h",
479 "maccocoasocketserver.mm",
480 "macsocketserver.cc",
481 "macsocketserver.h",
482 "macwindowpicker.cc",
483 "macwindowpicker.h",
484 ]
485 }
486
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000487 if (is_win) {
488 sources += [
489 "diskcache_win32.cc",
490 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000491 "win32regkey.cc",
492 "win32regkey.h",
493 "win32socketinit.cc",
494 "win32socketinit.h",
495 "win32socketserver.cc",
496 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000497 ]
498 }
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000499 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000500 deps += [ "//third_party/jsoncpp" ]
501 } else {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000502 include_dirs += [ rtc_jsoncpp_root ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000503
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000504 # When defined changes the include path for json.h to where it is
505 # expected to be when building json outside of the standalone build.
506 defines += [ "WEBRTC_EXTERNAL_JSON" ]
507 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000508 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000509
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000510 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
kjellander@webrtc.org62711f82014-06-29 13:37:08 +0000511 # compiler settings.
512 configs -= [ "//build/config/compiler:chromium_code" ]
513 configs += [ "//build/config/compiler:no_chromium_code" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000514 if (!is_win) {
515 cflags += [ "-Wno-uninitialized" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000516 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000517
svaldez7f7a8192016-04-18 11:13:11 -0700518 if (rtc_build_ssl) {
519 deps += [ "//third_party/boringssl" ]
520 } else {
521 configs += [ "external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000522 }
523
524 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000525 sources += [
526 "ifaddrs-android.cc",
527 "ifaddrs-android.h",
528 ]
529
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000530 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000531 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200532 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000533 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000534 }
535
kjellandera8a7ef62016-04-05 08:13:31 -0700536 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200537 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700538 "maccocoathreadhelper.h",
539 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200540 "macconversion.cc",
541 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700542 "macifaddrs_converter.cc",
543 "scoped_autorelease_pool.h",
544 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200545 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000546 }
547
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000548 if (use_x11) {
549 sources += [
550 "x11windowpicker.cc",
551 "x11windowpicker.h",
552 ]
553 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000554 "dl",
555 "rt",
556 "Xext",
557 "X11",
558 "Xcomposite",
559 "Xrender",
560 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000561 }
562
563 if (is_linux) {
564 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000565 "dl",
566 "rt",
567 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000568 }
569
570 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000571 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000572 "macutils.cc",
573 "macutils.h",
574 ]
kjellander3bcedd32016-06-08 01:14:15 -0700575 libs += [
576 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
577 "ApplicationServices.framework",
578
579 # For GetGestalt in macutils.cc.
580 "CoreServices.framework",
581 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000582 }
583
584 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000585 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000586 "win32.cc",
587 "win32.h",
588 "win32filesystem.cc",
589 "win32filesystem.h",
590 "win32securityerrors.cc",
591 "win32window.cc",
592 "win32window.h",
593 "win32windowpicker.cc",
594 "win32windowpicker.h",
595 "winfirewall.cc",
596 "winfirewall.h",
597 "winping.cc",
598 "winping.h",
599 ]
600
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000601 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000602 "crypt32.lib",
603 "iphlpapi.lib",
604 "secur32.lib",
605 ]
606
607 cflags += [
608 # Suppress warnings about WIN32_LEAN_AND_MEAN.
609 "/wd4005",
610 "/wd4703",
611 ]
612
613 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000614 }
615
kjellandera8a7ef62016-04-05 08:13:31 -0700616 if (is_posix) {
617 sources += [
618 "ifaddrs_converter.cc",
619 "ifaddrs_converter.h",
620 "unixfilesystem.cc",
621 "unixfilesystem.h",
622 ]
623 if (is_debug) {
624 # The Chromium build/common.gypi defines this for all posix
625 # _except_ for ios & mac. We want it there as well, e.g.
626 # because ASSERT and friends trigger off of it.
627 defines += [ "_DEBUG" ]
628 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000629 }
630
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000631 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000632 defines += [ "CARBON_DEPRECATED=YES" ]
633 }
634
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000635 if (is_linux || is_android) {
636 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000637 "linux.cc",
638 "linux.h",
639 ]
640 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700641
642 if (is_nacl) {
643 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
644 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800645 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700646 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000647}
tkchin42f580e2015-11-26 23:18:23 -0800648
kjellander988d31e2016-02-05 00:23:50 -0800649source_set("gtest_prod") {
650 sources = [
651 "gtest_prod_util.h",
652 ]
653}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200654
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200655if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700656 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200657 defines = [ "GTEST_RELATIVE_PATH" ]
658 }
659
kjellander82a94492016-06-12 22:12:01 -0700660 source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200661 testonly = true
662 sources = [
663 # Also use this as a convenient dumping ground for misc files that are
664 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700665 "fakeclock.cc",
666 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200667 "fakenetwork.h",
668 "fakesslidentity.h",
669 "faketaskrunner.h",
670 "gunit.h",
671 "testbase64.h",
672 "testechoserver.h",
673 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700674 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200675 "unittest_main.cc",
676 ]
677 configs += [ "..:common_config" ]
678 public_configs = [
679 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700680 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200681 ]
682 deps = [
683 ":rtc_base",
684 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200685 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200686 ]
687 public_deps = [
688 "//testing/gtest",
689 ]
690 }
691}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200692
693if (is_android) {
694 android_library("base_java") {
695 java_files = [
696 "java/src/org/webrtc/Logging.java",
697 "java/src/org/webrtc/Size.java",
698 "java/src/org/webrtc/ThreadUtils.java",
699 ]
700
701 deps = [
702 "//base:base_java",
703 ]
704 }
705}