blob: e7c01bef13d49732f73980d8260e00708caf94f8 [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.
ehmaldonado38a21322016-09-02 04:10:34 -070093rtc_static_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 = []
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",
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200126 "file.cc",
127 "file.h",
ivoc48052312016-08-25 04:43:45 -0700128 "format_macros.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700129 "location.cc",
130 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000131 "md5.cc",
132 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000133 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000134 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700135 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700136 "onetimeevent.h",
Karl Wibergbe579832015-11-10 22:34:18 +0100137 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000138 "platform_file.cc",
139 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200140 "platform_thread.cc",
141 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800142 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200143 "race_checker.cc",
144 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800145 "random.cc",
146 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700147 "rate_limiter.cc",
148 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800149 "rate_statistics.cc",
150 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700151 "ratetracker.cc",
152 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800153 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800154 "safe_conversions.h",
155 "safe_conversions_impl.h",
kwibergac554ee2016-09-02 00:39:33 -0700156 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800157 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000158 "stringencode.cc",
159 "stringencode.h",
160 "stringutils.cc",
161 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700162 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700163 "systeminfo.cc",
164 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000165 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000166 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000167 "thread_checker.h",
168 "thread_checker_impl.cc",
169 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700170 "timestampaligner.cc",
171 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000172 "timeutils.cc",
173 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000174 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000175 ]
Noah Richards915590e2015-04-22 15:43:08 -0700176
aleloi16f55a12016-08-23 08:08:23 -0700177 if (is_android) {
178 libs += [ "log" ]
179 }
180
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200181 if (is_posix) {
182 sources += [ "file_posix.cc" ]
183 }
184
185 if (is_win) {
186 sources += [ "file_win.cc" ]
187 }
188
Peter Boström11e02292015-11-25 21:36:14 +0100189 if (build_with_chromium) {
190 # Dependency on chromium's logging (in //base).
191 deps += [ "//base:base" ]
192 sources += [
193 "../../webrtc_overrides/webrtc/base/logging.cc",
194 "../../webrtc_overrides/webrtc/base/logging.h",
195 ]
196 include_dirs = [ "../../webrtc_overrides" ]
197 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700198 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200199 "logging.cc",
200 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200201 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700202 ]
203 }
tommi09c60da2016-05-24 11:40:35 -0700204}
205
Per33b9c8f2016-07-15 08:25:42 +0200206config("enable_libevent_config") {
207 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
208}
209
ehmaldonado38a21322016-09-02 04:10:34 -0700210rtc_static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700211 public_deps = [
212 ":rtc_base_approved",
213 ]
tommi09c60da2016-05-24 11:40:35 -0700214
215 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700216 "sequenced_task_checker.h",
217 "sequenced_task_checker_impl.cc",
218 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700219 ]
tommic06b1332016-05-14 11:31:40 -0700220
perkj84bd5c72016-08-30 23:01:06 -0700221 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700222 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700223 "../../webrtc_overrides/webrtc/base/task_queue.cc",
224 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700225 ]
perkj84bd5c72016-08-30 23:01:06 -0700226 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700227 } else {
perkj84bd5c72016-08-30 23:01:06 -0700228 sources += [
229 "task_queue.h",
230 "task_queue_posix.h",
231 ]
232 if (rtc_build_libevent) {
233 deps = [
234 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700235 ]
236 }
perkj84bd5c72016-08-30 23:01:06 -0700237
238 if (rtc_enable_libevent) {
239 sources += [
240 "task_queue_libevent.cc",
241 "task_queue_posix.cc",
242 ]
243 all_dependent_configs = [ ":enable_libevent_config" ]
244 } else {
245 if (is_mac || is_ios) {
246 sources += [
247 "task_queue_gcd.cc",
248 "task_queue_posix.cc",
249 ]
250 }
251 if (is_win) {
252 sources += [ "task_queue_win.cc" ]
253 }
phoglundff274392016-05-17 03:44:28 -0700254 }
tommic06b1332016-05-14 11:31:40 -0700255 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000256}
257
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700258config("rtc_base_warnings_config") {
259 if (is_win && is_clang) {
260 cflags = [
261 # Disable warnings failing when compiling with Clang on Windows.
262 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
263 "-Wno-sign-compare",
264 "-Wno-missing-braces",
265 ]
266 }
267}
268
ehmaldonado38a21322016-09-02 04:10:34 -0700269rtc_static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000270 cflags = []
271 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000272 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700273 deps = [
274 "..:webrtc_common",
275 ]
Tommid44c0772016-03-11 17:12:32 -0800276 public_deps = [
277 ":rtc_base_approved",
278 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000279
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000280 configs += [
sdefresne0db3db92016-03-21 11:20:28 -0700281 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000282 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000283 ]
284
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000285 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700287 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000288 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000289 ]
290
kjellanderb1f14062016-04-25 00:01:36 -0700291 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200292 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000293
294 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000295 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000296 "asyncfile.cc",
297 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700298 "asyncinvoker-inl.h",
299 "asyncinvoker.cc",
300 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000301 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000302 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000303 "asyncresolverinterface.cc",
304 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000305 "asyncsocket.cc",
306 "asyncsocket.h",
307 "asynctcpsocket.cc",
308 "asynctcpsocket.h",
309 "asyncudpsocket.cc",
310 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000311 "autodetectproxy.cc",
312 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "base64.cc",
314 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000315 "common.cc",
316 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000317 "crc32.cc",
318 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000319 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000320 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000321 "diskcache.cc",
322 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700323 "filerotatingstream.cc",
324 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000325 "fileutils.cc",
326 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000327 "firewallsocketserver.cc",
328 "firewallsocketserver.h",
329 "flags.cc",
330 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000331 "gunit_prod.h",
332 "helpers.cc",
333 "helpers.h",
334 "httpbase.cc",
335 "httpbase.h",
336 "httpclient.cc",
337 "httpclient.h",
338 "httpcommon-inl.h",
339 "httpcommon.cc",
340 "httpcommon.h",
341 "httprequest.cc",
342 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000343 "iosfilesystem.mm",
344 "ipaddress.cc",
345 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000346 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000347 "messagedigest.cc",
348 "messagedigest.h",
349 "messagehandler.cc",
350 "messagehandler.h",
351 "messagequeue.cc",
352 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000353 "nethelpers.cc",
354 "nethelpers.h",
355 "network.cc",
356 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700357 "networkmonitor.cc",
358 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700359 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000360 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700361 "openssl.h",
362 "openssladapter.cc",
363 "openssladapter.h",
364 "openssldigest.cc",
365 "openssldigest.h",
366 "opensslidentity.cc",
367 "opensslidentity.h",
368 "opensslstreamadapter.cc",
369 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000370 "pathutils.cc",
371 "pathutils.h",
372 "physicalsocketserver.cc",
373 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000374 "proxydetect.cc",
375 "proxydetect.h",
376 "proxyinfo.cc",
377 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000378 "ratelimiter.cc",
379 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200380 "rtccertificate.cc",
381 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200382 "rtccertificategenerator.cc",
383 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000384 "sha1.cc",
385 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000386 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000387 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800388 "sharedexclusivelock.cc",
389 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000390 "signalthread.cc",
391 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000392 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000393 "sigslot.h",
394 "sigslotrepeater.h",
395 "socket.h",
396 "socketadapters.cc",
397 "socketadapters.h",
398 "socketaddress.cc",
399 "socketaddress.h",
400 "socketaddresspair.cc",
401 "socketaddresspair.h",
402 "socketfactory.h",
403 "socketpool.cc",
404 "socketpool.h",
405 "socketserver.h",
406 "socketstream.cc",
407 "socketstream.h",
408 "ssladapter.cc",
409 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000410 "sslfingerprint.cc",
411 "sslfingerprint.h",
412 "sslidentity.cc",
413 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000414 "sslsocketfactory.cc",
415 "sslsocketfactory.h",
416 "sslstreamadapter.cc",
417 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000418 "stream.cc",
419 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000420 "task.cc",
421 "task.h",
422 "taskparent.cc",
423 "taskparent.h",
424 "taskrunner.cc",
425 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000426 "thread.cc",
427 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000428 "timing.cc",
429 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000430 "urlencode.cc",
431 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000432 "worker.cc",
433 "worker.h",
434 ]
435
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700436 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
437 # compiler settings.
ehmaldonado38a21322016-09-02 04:10:34 -0700438 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700439 configs += [ "//build/config/compiler:no_chromium_code" ]
440 if (!is_win) {
441 cflags += [ "-Wno-uninitialized" ]
442 }
443
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000444 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000445 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700446 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000447 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000448
449 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700450 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000451 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000452 ]
453
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000454 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000455 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700456 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000457 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000458 "bandwidthsmoother.cc",
459 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000460 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000461 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000462 "httpserver.cc",
463 "httpserver.h",
464 "json.cc",
465 "json.h",
tkchin93411912015-07-22 12:12:17 -0700466 "logsinks.cc",
467 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000468 "mathutils.h",
469 "multipart.cc",
470 "multipart.h",
471 "natserver.cc",
472 "natserver.h",
473 "natsocketfactory.cc",
474 "natsocketfactory.h",
475 "nattypes.cc",
476 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000477 "optionsfile.cc",
478 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000479 "profiler.cc",
480 "profiler.h",
481 "proxyserver.cc",
482 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000483 "referencecountedsingletonfactory.h",
484 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200485 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000486 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000487 "sslconfig.h",
488 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700489 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000490 "testclient.cc",
491 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000492 "transformadapter.cc",
493 "transformadapter.h",
494 "versionparsing.cc",
495 "versionparsing.h",
496 "virtualsocketserver.cc",
497 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000498 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000499 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200500 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000501 ]
502
kjellandera8a7ef62016-04-05 08:13:31 -0700503 if (is_linux) {
504 sources += [
505 "dbus.cc",
506 "dbus.h",
507 "libdbusglibsymboltable.cc",
508 "libdbusglibsymboltable.h",
509 "linuxfdwalk.c",
510 "linuxfdwalk.h",
511 ]
512 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000513
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000514 if (is_posix) {
515 sources += [
516 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000517 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000518 "posix.cc",
519 "posix.h",
520 ]
521 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000522
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000523 if (is_mac) {
524 sources += [
525 "macasyncsocket.cc",
526 "macasyncsocket.h",
527 "maccocoasocketserver.h",
528 "maccocoasocketserver.mm",
529 "macsocketserver.cc",
530 "macsocketserver.h",
531 "macwindowpicker.cc",
532 "macwindowpicker.h",
533 ]
534 }
535
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000536 if (is_win) {
537 sources += [
538 "diskcache_win32.cc",
539 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000540 "win32regkey.cc",
541 "win32regkey.h",
542 "win32socketinit.cc",
543 "win32socketinit.h",
544 "win32socketserver.cc",
545 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000546 ]
547 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700548
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000549 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000550 deps += [ "//third_party/jsoncpp" ]
551 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700552 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000553
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000554 # When defined changes the include path for json.h to where it is
555 # expected to be when building json outside of the standalone build.
556 defines += [ "WEBRTC_EXTERNAL_JSON" ]
557 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000558 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000559
svaldez7f7a8192016-04-18 11:13:11 -0700560 if (rtc_build_ssl) {
561 deps += [ "//third_party/boringssl" ]
562 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700563 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000564 }
565
566 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000567 sources += [
568 "ifaddrs-android.cc",
569 "ifaddrs-android.h",
570 ]
571
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000572 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000573 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200574 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000575 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000576 }
577
kjellandera8a7ef62016-04-05 08:13:31 -0700578 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200579 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700580 "maccocoathreadhelper.h",
581 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200582 "macconversion.cc",
583 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700584 "macifaddrs_converter.cc",
585 "scoped_autorelease_pool.h",
586 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200587 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000588 }
589
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000590 if (use_x11) {
591 sources += [
592 "x11windowpicker.cc",
593 "x11windowpicker.h",
594 ]
595 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000596 "dl",
597 "rt",
598 "Xext",
599 "X11",
600 "Xcomposite",
601 "Xrender",
602 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000603 }
604
605 if (is_linux) {
606 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000607 "dl",
608 "rt",
609 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000610 }
611
612 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000613 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000614 "macutils.cc",
615 "macutils.h",
616 ]
kjellander3bcedd32016-06-08 01:14:15 -0700617 libs += [
618 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
619 "ApplicationServices.framework",
620
621 # For GetGestalt in macutils.cc.
622 "CoreServices.framework",
623 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000624 }
625
626 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000627 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000628 "win32.cc",
629 "win32.h",
630 "win32filesystem.cc",
631 "win32filesystem.h",
632 "win32securityerrors.cc",
633 "win32window.cc",
634 "win32window.h",
635 "win32windowpicker.cc",
636 "win32windowpicker.h",
637 "winfirewall.cc",
638 "winfirewall.h",
639 "winping.cc",
640 "winping.h",
641 ]
642
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000643 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000644 "crypt32.lib",
645 "iphlpapi.lib",
646 "secur32.lib",
647 ]
648
649 cflags += [
650 # Suppress warnings about WIN32_LEAN_AND_MEAN.
651 "/wd4005",
652 "/wd4703",
653 ]
654
655 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000656 }
657
kjellandera8a7ef62016-04-05 08:13:31 -0700658 if (is_posix) {
659 sources += [
660 "ifaddrs_converter.cc",
661 "ifaddrs_converter.h",
662 "unixfilesystem.cc",
663 "unixfilesystem.h",
664 ]
665 if (is_debug) {
666 # The Chromium build/common.gypi defines this for all posix
667 # _except_ for ios & mac. We want it there as well, e.g.
668 # because ASSERT and friends trigger off of it.
669 defines += [ "_DEBUG" ]
670 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000671 }
672
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000673 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000674 defines += [ "CARBON_DEPRECATED=YES" ]
675 }
676
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000677 if (is_linux || is_android) {
678 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000679 "linux.cc",
680 "linux.h",
681 ]
682 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700683
684 if (is_nacl) {
685 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
686 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800687 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700688 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700689 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700690 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700691 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700692 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000693}
tkchin42f580e2015-11-26 23:18:23 -0800694
ehmaldonado38a21322016-09-02 04:10:34 -0700695rtc_source_set("gtest_prod") {
kjellander988d31e2016-02-05 00:23:50 -0800696 sources = [
697 "gtest_prod_util.h",
698 ]
699}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200700
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200701if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700702 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200703 defines = [ "GTEST_RELATIVE_PATH" ]
704 }
705
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700706 config("rtc_base_tests_utils_warnings_config") {
707 if (is_win && is_clang) {
708 cflags = [
709 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
710 "-Wno-reorder",
711 "-Wno-sign-compare",
712 ]
713 }
714 }
715
ehmaldonado38a21322016-09-02 04:10:34 -0700716 rtc_source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200717 testonly = true
718 sources = [
719 # Also use this as a convenient dumping ground for misc files that are
720 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700721 "fakeclock.cc",
722 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200723 "fakenetwork.h",
724 "fakesslidentity.h",
725 "faketaskrunner.h",
726 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700727 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200728 "testbase64.h",
729 "testechoserver.h",
730 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700731 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200732 "unittest_main.cc",
733 ]
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700734 configs += [ ":rtc_base_tests_utils_warnings_config" ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200735 public_configs = [
736 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700737 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200738 ]
739 deps = [
740 ":rtc_base",
741 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200742 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200743 ]
744 public_deps = [
745 "//testing/gtest",
746 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700747
748 if (is_clang) {
749 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700750 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700751 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200752 }
753}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200754
755if (is_android) {
756 android_library("base_java") {
757 java_files = [
758 "java/src/org/webrtc/Logging.java",
759 "java/src/org/webrtc/Size.java",
760 "java/src/org/webrtc/ThreadUtils.java",
761 ]
762
763 deps = [
764 "//base:base_java",
765 ]
766 }
767}