blob: a1748cadc4ab3005bac739ce852232632300ce49 [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",
ivoc48052312016-08-25 04:43:45 -0700127 "format_macros.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700128 "location.cc",
129 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000130 "md5.cc",
131 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000132 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000133 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700134 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700135 "onetimeevent.h",
Karl Wibergbe579832015-11-10 22:34:18 +0100136 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000137 "platform_file.cc",
138 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200139 "platform_thread.cc",
140 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800141 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200142 "race_checker.cc",
143 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800144 "random.cc",
145 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700146 "rate_limiter.cc",
147 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800148 "rate_statistics.cc",
149 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700150 "ratetracker.cc",
151 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800152 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800153 "safe_conversions.h",
154 "safe_conversions_impl.h",
tommi04af8392016-02-14 08:11:10 -0800155 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000156 "stringencode.cc",
157 "stringencode.h",
158 "stringutils.cc",
159 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700160 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700161 "systeminfo.cc",
162 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000163 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000164 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000165 "thread_checker.h",
166 "thread_checker_impl.cc",
167 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700168 "timestampaligner.cc",
169 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000170 "timeutils.cc",
171 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000172 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000173 ]
Noah Richards915590e2015-04-22 15:43:08 -0700174
aleloi16f55a12016-08-23 08:08:23 -0700175 if (is_android) {
176 libs += [ "log" ]
177 }
178
Peter Boström11e02292015-11-25 21:36:14 +0100179 if (build_with_chromium) {
180 # Dependency on chromium's logging (in //base).
181 deps += [ "//base:base" ]
182 sources += [
183 "../../webrtc_overrides/webrtc/base/logging.cc",
184 "../../webrtc_overrides/webrtc/base/logging.h",
185 ]
186 include_dirs = [ "../../webrtc_overrides" ]
187 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700188 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200189 "logging.cc",
190 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200191 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700192 ]
193 }
tommi09c60da2016-05-24 11:40:35 -0700194}
195
Per33b9c8f2016-07-15 08:25:42 +0200196config("enable_libevent_config") {
197 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
198}
199
tommi09c60da2016-05-24 11:40:35 -0700200static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700201 public_deps = [
202 ":rtc_base_approved",
203 ]
tommi09c60da2016-05-24 11:40:35 -0700204 configs += [ "..:common_config" ]
205
206 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700207 "sequenced_task_checker.h",
208 "sequenced_task_checker_impl.cc",
209 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700210 "task_queue.h",
211 "task_queue_posix.h",
212 ]
tommic06b1332016-05-14 11:31:40 -0700213
phoglundff274392016-05-17 03:44:28 -0700214 if (rtc_build_libevent) {
kjellanderbac04122016-06-02 02:18:48 -0700215 deps = [
216 "//base/third_party/libevent",
217 ]
tommic06b1332016-05-14 11:31:40 -0700218 }
tommi09c60da2016-05-24 11:40:35 -0700219
phoglundff274392016-05-17 03:44:28 -0700220 if (rtc_enable_libevent) {
221 sources += [
222 "task_queue_libevent.cc",
223 "task_queue_posix.cc",
224 ]
Per33b9c8f2016-07-15 08:25:42 +0200225 all_dependent_configs = [ ":enable_libevent_config" ]
phoglundff274392016-05-17 03:44:28 -0700226 } else {
phoglundff274392016-05-17 03:44:28 -0700227 if (is_mac || is_ios) {
228 sources += [
229 "task_queue_gcd.cc",
230 "task_queue_posix.cc",
231 ]
232 }
233 if (is_win) {
234 sources += [ "task_queue_win.cc" ]
235 }
tommic06b1332016-05-14 11:31:40 -0700236 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000237}
238
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700239config("rtc_base_warnings_config") {
240 if (is_win && is_clang) {
241 cflags = [
242 # Disable warnings failing when compiling with Clang on Windows.
243 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
244 "-Wno-sign-compare",
245 "-Wno-missing-braces",
246 ]
247 }
248}
249
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000250static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000251 cflags = []
252 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000253 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700254 deps = [
255 "..:webrtc_common",
256 ]
Tommid44c0772016-03-11 17:12:32 -0800257 public_deps = [
258 ":rtc_base_approved",
259 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000260
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000261 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000262 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700263 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000264 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000265 ]
266
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000267 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000268 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700269 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000270 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000271 ]
272
kjellanderb1f14062016-04-25 00:01:36 -0700273 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200274 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000275
276 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000277 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000278 "asyncfile.cc",
279 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700280 "asyncinvoker-inl.h",
281 "asyncinvoker.cc",
282 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000283 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000284 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000285 "asyncresolverinterface.cc",
286 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000287 "asyncsocket.cc",
288 "asyncsocket.h",
289 "asynctcpsocket.cc",
290 "asynctcpsocket.h",
291 "asyncudpsocket.cc",
292 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000293 "autodetectproxy.cc",
294 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000295 "base64.cc",
296 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000297 "common.cc",
298 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000299 "crc32.cc",
300 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000301 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000302 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000303 "diskcache.cc",
304 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700305 "filerotatingstream.cc",
306 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000307 "fileutils.cc",
308 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000309 "firewallsocketserver.cc",
310 "firewallsocketserver.h",
311 "flags.cc",
312 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "gunit_prod.h",
314 "helpers.cc",
315 "helpers.h",
316 "httpbase.cc",
317 "httpbase.h",
318 "httpclient.cc",
319 "httpclient.h",
320 "httpcommon-inl.h",
321 "httpcommon.cc",
322 "httpcommon.h",
323 "httprequest.cc",
324 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000325 "iosfilesystem.mm",
326 "ipaddress.cc",
327 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000328 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000329 "messagedigest.cc",
330 "messagedigest.h",
331 "messagehandler.cc",
332 "messagehandler.h",
333 "messagequeue.cc",
334 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000335 "nethelpers.cc",
336 "nethelpers.h",
337 "network.cc",
338 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700339 "networkmonitor.cc",
340 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700341 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000342 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700343 "openssl.h",
344 "openssladapter.cc",
345 "openssladapter.h",
346 "openssldigest.cc",
347 "openssldigest.h",
348 "opensslidentity.cc",
349 "opensslidentity.h",
350 "opensslstreamadapter.cc",
351 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000352 "pathutils.cc",
353 "pathutils.h",
354 "physicalsocketserver.cc",
355 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000356 "proxydetect.cc",
357 "proxydetect.h",
358 "proxyinfo.cc",
359 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000360 "ratelimiter.cc",
361 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200362 "rtccertificate.cc",
363 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200364 "rtccertificategenerator.cc",
365 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000366 "sha1.cc",
367 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000368 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000369 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800370 "sharedexclusivelock.cc",
371 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000372 "signalthread.cc",
373 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000374 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000375 "sigslot.h",
376 "sigslotrepeater.h",
377 "socket.h",
378 "socketadapters.cc",
379 "socketadapters.h",
380 "socketaddress.cc",
381 "socketaddress.h",
382 "socketaddresspair.cc",
383 "socketaddresspair.h",
384 "socketfactory.h",
385 "socketpool.cc",
386 "socketpool.h",
387 "socketserver.h",
388 "socketstream.cc",
389 "socketstream.h",
390 "ssladapter.cc",
391 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000392 "sslfingerprint.cc",
393 "sslfingerprint.h",
394 "sslidentity.cc",
395 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000396 "sslsocketfactory.cc",
397 "sslsocketfactory.h",
398 "sslstreamadapter.cc",
399 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000400 "stream.cc",
401 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000402 "task.cc",
403 "task.h",
404 "taskparent.cc",
405 "taskparent.h",
406 "taskrunner.cc",
407 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000408 "thread.cc",
409 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000410 "timing.cc",
411 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000412 "urlencode.cc",
413 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000414 "worker.cc",
415 "worker.h",
416 ]
417
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700418 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
419 # compiler settings.
420 configs -= [ "//build/config/compiler:chromium_code" ]
421 configs += [ "//build/config/compiler:no_chromium_code" ]
422 if (!is_win) {
423 cflags += [ "-Wno-uninitialized" ]
424 }
425
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000426 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000427 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700428 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000429 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000430
431 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700432 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000433 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000434 ]
435
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000436 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000437 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700438 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000439 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000440 "bandwidthsmoother.cc",
441 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000442 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000443 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000444 "httpserver.cc",
445 "httpserver.h",
446 "json.cc",
447 "json.h",
tkchin93411912015-07-22 12:12:17 -0700448 "logsinks.cc",
449 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000450 "mathutils.h",
451 "multipart.cc",
452 "multipart.h",
453 "natserver.cc",
454 "natserver.h",
455 "natsocketfactory.cc",
456 "natsocketfactory.h",
457 "nattypes.cc",
458 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000459 "optionsfile.cc",
460 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000461 "profiler.cc",
462 "profiler.h",
463 "proxyserver.cc",
464 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000465 "referencecountedsingletonfactory.h",
466 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200467 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000468 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000469 "sslconfig.h",
470 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700471 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000472 "testclient.cc",
473 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000474 "transformadapter.cc",
475 "transformadapter.h",
476 "versionparsing.cc",
477 "versionparsing.h",
478 "virtualsocketserver.cc",
479 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000480 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000481 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200482 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000483 ]
484
kjellandera8a7ef62016-04-05 08:13:31 -0700485 if (is_linux) {
486 sources += [
487 "dbus.cc",
488 "dbus.h",
489 "libdbusglibsymboltable.cc",
490 "libdbusglibsymboltable.h",
491 "linuxfdwalk.c",
492 "linuxfdwalk.h",
493 ]
494 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000495
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000496 if (is_posix) {
497 sources += [
498 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000499 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000500 "posix.cc",
501 "posix.h",
502 ]
503 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000504
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000505 if (is_mac) {
506 sources += [
507 "macasyncsocket.cc",
508 "macasyncsocket.h",
509 "maccocoasocketserver.h",
510 "maccocoasocketserver.mm",
511 "macsocketserver.cc",
512 "macsocketserver.h",
513 "macwindowpicker.cc",
514 "macwindowpicker.h",
515 ]
516 }
517
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000518 if (is_win) {
519 sources += [
520 "diskcache_win32.cc",
521 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000522 "win32regkey.cc",
523 "win32regkey.h",
524 "win32socketinit.cc",
525 "win32socketinit.h",
526 "win32socketserver.cc",
527 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000528 ]
529 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700530
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000531 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000532 deps += [ "//third_party/jsoncpp" ]
533 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700534 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000535
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000536 # When defined changes the include path for json.h to where it is
537 # expected to be when building json outside of the standalone build.
538 defines += [ "WEBRTC_EXTERNAL_JSON" ]
539 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000540 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000541
svaldez7f7a8192016-04-18 11:13:11 -0700542 if (rtc_build_ssl) {
543 deps += [ "//third_party/boringssl" ]
544 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700545 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000546 }
547
548 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000549 sources += [
550 "ifaddrs-android.cc",
551 "ifaddrs-android.h",
552 ]
553
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000554 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000555 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200556 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000557 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000558 }
559
kjellandera8a7ef62016-04-05 08:13:31 -0700560 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200561 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700562 "maccocoathreadhelper.h",
563 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200564 "macconversion.cc",
565 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700566 "macifaddrs_converter.cc",
567 "scoped_autorelease_pool.h",
568 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200569 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000570 }
571
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000572 if (use_x11) {
573 sources += [
574 "x11windowpicker.cc",
575 "x11windowpicker.h",
576 ]
577 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000578 "dl",
579 "rt",
580 "Xext",
581 "X11",
582 "Xcomposite",
583 "Xrender",
584 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000585 }
586
587 if (is_linux) {
588 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000589 "dl",
590 "rt",
591 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000592 }
593
594 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000595 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000596 "macutils.cc",
597 "macutils.h",
598 ]
kjellander3bcedd32016-06-08 01:14:15 -0700599 libs += [
600 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
601 "ApplicationServices.framework",
602
603 # For GetGestalt in macutils.cc.
604 "CoreServices.framework",
605 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000606 }
607
608 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000609 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000610 "win32.cc",
611 "win32.h",
612 "win32filesystem.cc",
613 "win32filesystem.h",
614 "win32securityerrors.cc",
615 "win32window.cc",
616 "win32window.h",
617 "win32windowpicker.cc",
618 "win32windowpicker.h",
619 "winfirewall.cc",
620 "winfirewall.h",
621 "winping.cc",
622 "winping.h",
623 ]
624
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000625 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000626 "crypt32.lib",
627 "iphlpapi.lib",
628 "secur32.lib",
629 ]
630
631 cflags += [
632 # Suppress warnings about WIN32_LEAN_AND_MEAN.
633 "/wd4005",
634 "/wd4703",
635 ]
636
637 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000638 }
639
kjellandera8a7ef62016-04-05 08:13:31 -0700640 if (is_posix) {
641 sources += [
642 "ifaddrs_converter.cc",
643 "ifaddrs_converter.h",
644 "unixfilesystem.cc",
645 "unixfilesystem.h",
646 ]
647 if (is_debug) {
648 # The Chromium build/common.gypi defines this for all posix
649 # _except_ for ios & mac. We want it there as well, e.g.
650 # because ASSERT and friends trigger off of it.
651 defines += [ "_DEBUG" ]
652 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000653 }
654
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000655 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000656 defines += [ "CARBON_DEPRECATED=YES" ]
657 }
658
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000659 if (is_linux || is_android) {
660 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000661 "linux.cc",
662 "linux.h",
663 ]
664 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700665
666 if (is_nacl) {
667 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
668 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800669 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700670 }
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700671 if (is_clang) {
672 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
673 configs -= [ "//build/config/clang:find_bad_constructs" ]
674 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000675}
tkchin42f580e2015-11-26 23:18:23 -0800676
kjellander988d31e2016-02-05 00:23:50 -0800677source_set("gtest_prod") {
678 sources = [
679 "gtest_prod_util.h",
680 ]
681}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200682
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200683if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700684 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200685 defines = [ "GTEST_RELATIVE_PATH" ]
686 }
687
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700688 config("rtc_base_tests_utils_warnings_config") {
689 if (is_win && is_clang) {
690 cflags = [
691 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
692 "-Wno-reorder",
693 "-Wno-sign-compare",
694 ]
695 }
696 }
697
kjellander82a94492016-06-12 22:12:01 -0700698 source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200699 testonly = true
700 sources = [
701 # Also use this as a convenient dumping ground for misc files that are
702 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700703 "fakeclock.cc",
704 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200705 "fakenetwork.h",
706 "fakesslidentity.h",
707 "faketaskrunner.h",
708 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700709 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200710 "testbase64.h",
711 "testechoserver.h",
712 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700713 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200714 "unittest_main.cc",
715 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700716 configs += [
717 "..:common_config",
718 ":rtc_base_tests_utils_warnings_config",
719 ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200720 public_configs = [
721 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700722 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200723 ]
724 deps = [
725 ":rtc_base",
726 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200727 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200728 ]
729 public_deps = [
730 "//testing/gtest",
731 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700732
733 if (is_clang) {
734 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
735 configs -= [ "//build/config/clang:find_bad_constructs" ]
736 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200737 }
738}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200739
740if (is_android) {
741 android_library("base_java") {
742 java_files = [
743 "java/src/org/webrtc/Logging.java",
744 "java/src/org/webrtc/Size.java",
745 "java/src/org/webrtc/ThreadUtils.java",
746 ]
747
748 deps = [
749 "//base:base_java",
750 ]
751 }
752}