blob: aeb2f355584bdfc1a180cd6ce843920e85fc5eff [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 = []
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",
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200127 "file.cc",
128 "file.h",
ivoc48052312016-08-25 04:43:45 -0700129 "format_macros.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700130 "location.cc",
131 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000132 "md5.cc",
133 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000134 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000135 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700136 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700137 "onetimeevent.h",
Karl Wibergbe579832015-11-10 22:34:18 +0100138 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000139 "platform_file.cc",
140 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200141 "platform_thread.cc",
142 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800143 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200144 "race_checker.cc",
145 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800146 "random.cc",
147 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700148 "rate_limiter.cc",
149 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800150 "rate_statistics.cc",
151 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700152 "ratetracker.cc",
153 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800154 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800155 "safe_conversions.h",
156 "safe_conversions_impl.h",
kwibergac554ee2016-09-02 00:39:33 -0700157 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800158 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000159 "stringencode.cc",
160 "stringencode.h",
161 "stringutils.cc",
162 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700163 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700164 "systeminfo.cc",
165 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000166 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000167 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000168 "thread_checker.h",
169 "thread_checker_impl.cc",
170 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700171 "timestampaligner.cc",
172 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000173 "timeutils.cc",
174 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000175 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000176 ]
Noah Richards915590e2015-04-22 15:43:08 -0700177
aleloi16f55a12016-08-23 08:08:23 -0700178 if (is_android) {
179 libs += [ "log" ]
180 }
181
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200182 if (is_posix) {
183 sources += [ "file_posix.cc" ]
184 }
185
186 if (is_win) {
187 sources += [ "file_win.cc" ]
188 }
189
Peter Boström11e02292015-11-25 21:36:14 +0100190 if (build_with_chromium) {
191 # Dependency on chromium's logging (in //base).
192 deps += [ "//base:base" ]
193 sources += [
194 "../../webrtc_overrides/webrtc/base/logging.cc",
195 "../../webrtc_overrides/webrtc/base/logging.h",
196 ]
197 include_dirs = [ "../../webrtc_overrides" ]
198 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700199 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200200 "logging.cc",
201 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200202 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700203 ]
204 }
tommi09c60da2016-05-24 11:40:35 -0700205}
206
Per33b9c8f2016-07-15 08:25:42 +0200207config("enable_libevent_config") {
208 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
209}
210
ehmaldonado38a21322016-09-02 04:10:34 -0700211rtc_static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700212 public_deps = [
213 ":rtc_base_approved",
214 ]
tommi09c60da2016-05-24 11:40:35 -0700215 configs += [ "..:common_config" ]
216
217 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700218 "sequenced_task_checker.h",
219 "sequenced_task_checker_impl.cc",
220 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700221 ]
tommic06b1332016-05-14 11:31:40 -0700222
perkj84bd5c72016-08-30 23:01:06 -0700223 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700224 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700225 "../../webrtc_overrides/webrtc/base/task_queue.cc",
226 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700227 ]
perkj84bd5c72016-08-30 23:01:06 -0700228 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700229 } else {
perkj84bd5c72016-08-30 23:01:06 -0700230 sources += [
231 "task_queue.h",
232 "task_queue_posix.h",
233 ]
234 if (rtc_build_libevent) {
235 deps = [
236 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700237 ]
238 }
perkj84bd5c72016-08-30 23:01:06 -0700239
240 if (rtc_enable_libevent) {
241 sources += [
242 "task_queue_libevent.cc",
243 "task_queue_posix.cc",
244 ]
245 all_dependent_configs = [ ":enable_libevent_config" ]
246 } else {
247 if (is_mac || is_ios) {
248 sources += [
249 "task_queue_gcd.cc",
250 "task_queue_posix.cc",
251 ]
252 }
253 if (is_win) {
254 sources += [ "task_queue_win.cc" ]
255 }
phoglundff274392016-05-17 03:44:28 -0700256 }
tommic06b1332016-05-14 11:31:40 -0700257 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000258}
259
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700260config("rtc_base_warnings_config") {
261 if (is_win && is_clang) {
262 cflags = [
263 # Disable warnings failing when compiling with Clang on Windows.
264 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
265 "-Wno-sign-compare",
266 "-Wno-missing-braces",
267 ]
268 }
269}
270
ehmaldonado38a21322016-09-02 04:10:34 -0700271rtc_static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000272 cflags = []
273 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000274 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700275 deps = [
276 "..:webrtc_common",
277 ]
Tommid44c0772016-03-11 17:12:32 -0800278 public_deps = [
279 ":rtc_base_approved",
280 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000281
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000282 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000283 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700284 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000285 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286 ]
287
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000288 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000289 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700290 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000291 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000292 ]
293
kjellanderb1f14062016-04-25 00:01:36 -0700294 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200295 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000296
297 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000298 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000299 "asyncfile.cc",
300 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700301 "asyncinvoker-inl.h",
302 "asyncinvoker.cc",
303 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000304 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000305 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000306 "asyncresolverinterface.cc",
307 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000308 "asyncsocket.cc",
309 "asyncsocket.h",
310 "asynctcpsocket.cc",
311 "asynctcpsocket.h",
312 "asyncudpsocket.cc",
313 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000314 "autodetectproxy.cc",
315 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000316 "base64.cc",
317 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000318 "common.cc",
319 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000320 "crc32.cc",
321 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000322 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000323 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000324 "diskcache.cc",
325 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700326 "filerotatingstream.cc",
327 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000328 "fileutils.cc",
329 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000330 "firewallsocketserver.cc",
331 "firewallsocketserver.h",
332 "flags.cc",
333 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000334 "gunit_prod.h",
335 "helpers.cc",
336 "helpers.h",
337 "httpbase.cc",
338 "httpbase.h",
339 "httpclient.cc",
340 "httpclient.h",
341 "httpcommon-inl.h",
342 "httpcommon.cc",
343 "httpcommon.h",
344 "httprequest.cc",
345 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000346 "iosfilesystem.mm",
347 "ipaddress.cc",
348 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000349 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000350 "messagedigest.cc",
351 "messagedigest.h",
352 "messagehandler.cc",
353 "messagehandler.h",
354 "messagequeue.cc",
355 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000356 "nethelpers.cc",
357 "nethelpers.h",
358 "network.cc",
359 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700360 "networkmonitor.cc",
361 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700362 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000363 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700364 "openssl.h",
365 "openssladapter.cc",
366 "openssladapter.h",
367 "openssldigest.cc",
368 "openssldigest.h",
369 "opensslidentity.cc",
370 "opensslidentity.h",
371 "opensslstreamadapter.cc",
372 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000373 "pathutils.cc",
374 "pathutils.h",
375 "physicalsocketserver.cc",
376 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000377 "proxydetect.cc",
378 "proxydetect.h",
379 "proxyinfo.cc",
380 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000381 "ratelimiter.cc",
382 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200383 "rtccertificate.cc",
384 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200385 "rtccertificategenerator.cc",
386 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000387 "sha1.cc",
388 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000389 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000390 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800391 "sharedexclusivelock.cc",
392 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000393 "signalthread.cc",
394 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000395 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000396 "sigslot.h",
397 "sigslotrepeater.h",
398 "socket.h",
399 "socketadapters.cc",
400 "socketadapters.h",
401 "socketaddress.cc",
402 "socketaddress.h",
403 "socketaddresspair.cc",
404 "socketaddresspair.h",
405 "socketfactory.h",
406 "socketpool.cc",
407 "socketpool.h",
408 "socketserver.h",
409 "socketstream.cc",
410 "socketstream.h",
411 "ssladapter.cc",
412 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000413 "sslfingerprint.cc",
414 "sslfingerprint.h",
415 "sslidentity.cc",
416 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000417 "sslsocketfactory.cc",
418 "sslsocketfactory.h",
419 "sslstreamadapter.cc",
420 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000421 "stream.cc",
422 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000423 "task.cc",
424 "task.h",
425 "taskparent.cc",
426 "taskparent.h",
427 "taskrunner.cc",
428 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000429 "thread.cc",
430 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000431 "timing.cc",
432 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000433 "urlencode.cc",
434 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000435 "worker.cc",
436 "worker.h",
437 ]
438
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700439 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
440 # compiler settings.
ehmaldonado38a21322016-09-02 04:10:34 -0700441 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700442 configs += [ "//build/config/compiler:no_chromium_code" ]
443 if (!is_win) {
444 cflags += [ "-Wno-uninitialized" ]
445 }
446
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000447 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000448 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700449 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000450 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000451
452 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700453 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000454 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000455 ]
456
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000457 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000458 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700459 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000460 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000461 "bandwidthsmoother.cc",
462 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000463 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000464 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000465 "httpserver.cc",
466 "httpserver.h",
467 "json.cc",
468 "json.h",
tkchin93411912015-07-22 12:12:17 -0700469 "logsinks.cc",
470 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000471 "mathutils.h",
472 "multipart.cc",
473 "multipart.h",
474 "natserver.cc",
475 "natserver.h",
476 "natsocketfactory.cc",
477 "natsocketfactory.h",
478 "nattypes.cc",
479 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000480 "optionsfile.cc",
481 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000482 "profiler.cc",
483 "profiler.h",
484 "proxyserver.cc",
485 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000486 "referencecountedsingletonfactory.h",
487 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200488 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000489 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000490 "sslconfig.h",
491 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700492 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000493 "testclient.cc",
494 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000495 "transformadapter.cc",
496 "transformadapter.h",
497 "versionparsing.cc",
498 "versionparsing.h",
499 "virtualsocketserver.cc",
500 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000501 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000502 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200503 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000504 ]
505
kjellandera8a7ef62016-04-05 08:13:31 -0700506 if (is_linux) {
507 sources += [
508 "dbus.cc",
509 "dbus.h",
510 "libdbusglibsymboltable.cc",
511 "libdbusglibsymboltable.h",
512 "linuxfdwalk.c",
513 "linuxfdwalk.h",
514 ]
515 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000516
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000517 if (is_posix) {
518 sources += [
519 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000520 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000521 "posix.cc",
522 "posix.h",
523 ]
524 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000525
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000526 if (is_mac) {
527 sources += [
528 "macasyncsocket.cc",
529 "macasyncsocket.h",
530 "maccocoasocketserver.h",
531 "maccocoasocketserver.mm",
532 "macsocketserver.cc",
533 "macsocketserver.h",
534 "macwindowpicker.cc",
535 "macwindowpicker.h",
536 ]
537 }
538
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000539 if (is_win) {
540 sources += [
541 "diskcache_win32.cc",
542 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000543 "win32regkey.cc",
544 "win32regkey.h",
545 "win32socketinit.cc",
546 "win32socketinit.h",
547 "win32socketserver.cc",
548 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000549 ]
550 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700551
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000552 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000553 deps += [ "//third_party/jsoncpp" ]
554 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700555 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000556
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000557 # When defined changes the include path for json.h to where it is
558 # expected to be when building json outside of the standalone build.
559 defines += [ "WEBRTC_EXTERNAL_JSON" ]
560 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000561 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000562
svaldez7f7a8192016-04-18 11:13:11 -0700563 if (rtc_build_ssl) {
564 deps += [ "//third_party/boringssl" ]
565 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700566 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000567 }
568
569 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000570 sources += [
571 "ifaddrs-android.cc",
572 "ifaddrs-android.h",
573 ]
574
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000575 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000576 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200577 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000578 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000579 }
580
kjellandera8a7ef62016-04-05 08:13:31 -0700581 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200582 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700583 "maccocoathreadhelper.h",
584 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200585 "macconversion.cc",
586 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700587 "macifaddrs_converter.cc",
588 "scoped_autorelease_pool.h",
589 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200590 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000591 }
592
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000593 if (use_x11) {
594 sources += [
595 "x11windowpicker.cc",
596 "x11windowpicker.h",
597 ]
598 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000599 "dl",
600 "rt",
601 "Xext",
602 "X11",
603 "Xcomposite",
604 "Xrender",
605 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000606 }
607
608 if (is_linux) {
609 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000610 "dl",
611 "rt",
612 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000613 }
614
615 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000616 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000617 "macutils.cc",
618 "macutils.h",
619 ]
kjellander3bcedd32016-06-08 01:14:15 -0700620 libs += [
621 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
622 "ApplicationServices.framework",
623
624 # For GetGestalt in macutils.cc.
625 "CoreServices.framework",
626 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000627 }
628
629 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000630 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000631 "win32.cc",
632 "win32.h",
633 "win32filesystem.cc",
634 "win32filesystem.h",
635 "win32securityerrors.cc",
636 "win32window.cc",
637 "win32window.h",
638 "win32windowpicker.cc",
639 "win32windowpicker.h",
640 "winfirewall.cc",
641 "winfirewall.h",
642 "winping.cc",
643 "winping.h",
644 ]
645
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000646 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000647 "crypt32.lib",
648 "iphlpapi.lib",
649 "secur32.lib",
650 ]
651
652 cflags += [
653 # Suppress warnings about WIN32_LEAN_AND_MEAN.
654 "/wd4005",
655 "/wd4703",
656 ]
657
658 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000659 }
660
kjellandera8a7ef62016-04-05 08:13:31 -0700661 if (is_posix) {
662 sources += [
663 "ifaddrs_converter.cc",
664 "ifaddrs_converter.h",
665 "unixfilesystem.cc",
666 "unixfilesystem.h",
667 ]
668 if (is_debug) {
669 # The Chromium build/common.gypi defines this for all posix
670 # _except_ for ios & mac. We want it there as well, e.g.
671 # because ASSERT and friends trigger off of it.
672 defines += [ "_DEBUG" ]
673 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000674 }
675
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000676 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000677 defines += [ "CARBON_DEPRECATED=YES" ]
678 }
679
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000680 if (is_linux || is_android) {
681 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000682 "linux.cc",
683 "linux.h",
684 ]
685 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700686
687 if (is_nacl) {
688 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
689 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800690 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700691 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700692 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700693 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700694 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700695 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000696}
tkchin42f580e2015-11-26 23:18:23 -0800697
ehmaldonado38a21322016-09-02 04:10:34 -0700698rtc_source_set("gtest_prod") {
kjellander988d31e2016-02-05 00:23:50 -0800699 sources = [
700 "gtest_prod_util.h",
701 ]
702}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200703
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200704if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700705 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200706 defines = [ "GTEST_RELATIVE_PATH" ]
707 }
708
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700709 config("rtc_base_tests_utils_warnings_config") {
710 if (is_win && is_clang) {
711 cflags = [
712 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
713 "-Wno-reorder",
714 "-Wno-sign-compare",
715 ]
716 }
717 }
718
ehmaldonado38a21322016-09-02 04:10:34 -0700719 rtc_source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200720 testonly = true
721 sources = [
722 # Also use this as a convenient dumping ground for misc files that are
723 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700724 "fakeclock.cc",
725 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200726 "fakenetwork.h",
727 "fakesslidentity.h",
728 "faketaskrunner.h",
729 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700730 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200731 "testbase64.h",
732 "testechoserver.h",
733 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700734 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200735 "unittest_main.cc",
736 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700737 configs += [
738 "..:common_config",
739 ":rtc_base_tests_utils_warnings_config",
740 ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200741 public_configs = [
742 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700743 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200744 ]
745 deps = [
746 ":rtc_base",
747 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200748 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200749 ]
750 public_deps = [
751 "//testing/gtest",
752 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700753
754 if (is_clang) {
755 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700756 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700757 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200758 }
759}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200760
761if (is_android) {
762 android_library("base_java") {
763 java_files = [
764 "java/src/org/webrtc/Logging.java",
765 "java/src/org/webrtc/Size.java",
766 "java/src/org/webrtc/ThreadUtils.java",
767 ]
768
769 deps = [
770 "//base:base_java",
771 ]
772 }
773}