blob: 5da158a4a55039798b094e287d3d27fe0cbc2e59 [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",
kwibergac554ee2016-09-02 00:39:33 -0700155 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800156 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000157 "stringencode.cc",
158 "stringencode.h",
159 "stringutils.cc",
160 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700161 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700162 "systeminfo.cc",
163 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000164 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000165 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000166 "thread_checker.h",
167 "thread_checker_impl.cc",
168 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700169 "timestampaligner.cc",
170 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000171 "timeutils.cc",
172 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000173 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000174 ]
Noah Richards915590e2015-04-22 15:43:08 -0700175
aleloi16f55a12016-08-23 08:08:23 -0700176 if (is_android) {
177 libs += [ "log" ]
178 }
179
Peter Boström11e02292015-11-25 21:36:14 +0100180 if (build_with_chromium) {
181 # Dependency on chromium's logging (in //base).
182 deps += [ "//base:base" ]
183 sources += [
184 "../../webrtc_overrides/webrtc/base/logging.cc",
185 "../../webrtc_overrides/webrtc/base/logging.h",
186 ]
187 include_dirs = [ "../../webrtc_overrides" ]
188 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700189 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200190 "logging.cc",
191 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200192 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700193 ]
194 }
tommi09c60da2016-05-24 11:40:35 -0700195}
196
Per33b9c8f2016-07-15 08:25:42 +0200197config("enable_libevent_config") {
198 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
199}
200
tommi09c60da2016-05-24 11:40:35 -0700201static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700202 public_deps = [
203 ":rtc_base_approved",
204 ]
tommi09c60da2016-05-24 11:40:35 -0700205 configs += [ "..:common_config" ]
206
207 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700208 "sequenced_task_checker.h",
209 "sequenced_task_checker_impl.cc",
210 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700211 ]
tommic06b1332016-05-14 11:31:40 -0700212
perkj84bd5c72016-08-30 23:01:06 -0700213 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700214 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700215 "../../webrtc_overrides/webrtc/base/task_queue.cc",
216 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700217 ]
perkj84bd5c72016-08-30 23:01:06 -0700218 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700219 } else {
perkj84bd5c72016-08-30 23:01:06 -0700220 sources += [
221 "task_queue.h",
222 "task_queue_posix.h",
223 ]
224 if (rtc_build_libevent) {
225 deps = [
226 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700227 ]
228 }
perkj84bd5c72016-08-30 23:01:06 -0700229
230 if (rtc_enable_libevent) {
231 sources += [
232 "task_queue_libevent.cc",
233 "task_queue_posix.cc",
234 ]
235 all_dependent_configs = [ ":enable_libevent_config" ]
236 } else {
237 if (is_mac || is_ios) {
238 sources += [
239 "task_queue_gcd.cc",
240 "task_queue_posix.cc",
241 ]
242 }
243 if (is_win) {
244 sources += [ "task_queue_win.cc" ]
245 }
phoglundff274392016-05-17 03:44:28 -0700246 }
tommic06b1332016-05-14 11:31:40 -0700247 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000248}
249
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700250config("rtc_base_warnings_config") {
251 if (is_win && is_clang) {
252 cflags = [
253 # Disable warnings failing when compiling with Clang on Windows.
254 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
255 "-Wno-sign-compare",
256 "-Wno-missing-braces",
257 ]
258 }
259}
260
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000261static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000262 cflags = []
263 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000264 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700265 deps = [
266 "..:webrtc_common",
267 ]
Tommid44c0772016-03-11 17:12:32 -0800268 public_deps = [
269 ":rtc_base_approved",
270 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000271
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000272 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000273 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700274 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000275 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000276 ]
277
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000278 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000279 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700280 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000281 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000282 ]
283
kjellanderb1f14062016-04-25 00:01:36 -0700284 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200285 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000286
287 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000288 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000289 "asyncfile.cc",
290 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700291 "asyncinvoker-inl.h",
292 "asyncinvoker.cc",
293 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000294 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000295 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000296 "asyncresolverinterface.cc",
297 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000298 "asyncsocket.cc",
299 "asyncsocket.h",
300 "asynctcpsocket.cc",
301 "asynctcpsocket.h",
302 "asyncudpsocket.cc",
303 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000304 "autodetectproxy.cc",
305 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000306 "base64.cc",
307 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000308 "common.cc",
309 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000310 "crc32.cc",
311 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000312 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000314 "diskcache.cc",
315 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700316 "filerotatingstream.cc",
317 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000318 "fileutils.cc",
319 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000320 "firewallsocketserver.cc",
321 "firewallsocketserver.h",
322 "flags.cc",
323 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000324 "gunit_prod.h",
325 "helpers.cc",
326 "helpers.h",
327 "httpbase.cc",
328 "httpbase.h",
329 "httpclient.cc",
330 "httpclient.h",
331 "httpcommon-inl.h",
332 "httpcommon.cc",
333 "httpcommon.h",
334 "httprequest.cc",
335 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000336 "iosfilesystem.mm",
337 "ipaddress.cc",
338 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000339 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000340 "messagedigest.cc",
341 "messagedigest.h",
342 "messagehandler.cc",
343 "messagehandler.h",
344 "messagequeue.cc",
345 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000346 "nethelpers.cc",
347 "nethelpers.h",
348 "network.cc",
349 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700350 "networkmonitor.cc",
351 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700352 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000353 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700354 "openssl.h",
355 "openssladapter.cc",
356 "openssladapter.h",
357 "openssldigest.cc",
358 "openssldigest.h",
359 "opensslidentity.cc",
360 "opensslidentity.h",
361 "opensslstreamadapter.cc",
362 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000363 "pathutils.cc",
364 "pathutils.h",
365 "physicalsocketserver.cc",
366 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000367 "proxydetect.cc",
368 "proxydetect.h",
369 "proxyinfo.cc",
370 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000371 "ratelimiter.cc",
372 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200373 "rtccertificate.cc",
374 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200375 "rtccertificategenerator.cc",
376 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000377 "sha1.cc",
378 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000379 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000380 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800381 "sharedexclusivelock.cc",
382 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000383 "signalthread.cc",
384 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000385 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000386 "sigslot.h",
387 "sigslotrepeater.h",
388 "socket.h",
389 "socketadapters.cc",
390 "socketadapters.h",
391 "socketaddress.cc",
392 "socketaddress.h",
393 "socketaddresspair.cc",
394 "socketaddresspair.h",
395 "socketfactory.h",
396 "socketpool.cc",
397 "socketpool.h",
398 "socketserver.h",
399 "socketstream.cc",
400 "socketstream.h",
401 "ssladapter.cc",
402 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000403 "sslfingerprint.cc",
404 "sslfingerprint.h",
405 "sslidentity.cc",
406 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000407 "sslsocketfactory.cc",
408 "sslsocketfactory.h",
409 "sslstreamadapter.cc",
410 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000411 "stream.cc",
412 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000413 "task.cc",
414 "task.h",
415 "taskparent.cc",
416 "taskparent.h",
417 "taskrunner.cc",
418 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000419 "thread.cc",
420 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000421 "timing.cc",
422 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000423 "urlencode.cc",
424 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000425 "worker.cc",
426 "worker.h",
427 ]
428
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700429 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
430 # compiler settings.
431 configs -= [ "//build/config/compiler:chromium_code" ]
432 configs += [ "//build/config/compiler:no_chromium_code" ]
433 if (!is_win) {
434 cflags += [ "-Wno-uninitialized" ]
435 }
436
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000437 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000438 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700439 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000440 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000441
442 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700443 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000444 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000445 ]
446
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000447 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000448 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700449 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000450 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000451 "bandwidthsmoother.cc",
452 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000453 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000454 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000455 "httpserver.cc",
456 "httpserver.h",
457 "json.cc",
458 "json.h",
tkchin93411912015-07-22 12:12:17 -0700459 "logsinks.cc",
460 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000461 "mathutils.h",
462 "multipart.cc",
463 "multipart.h",
464 "natserver.cc",
465 "natserver.h",
466 "natsocketfactory.cc",
467 "natsocketfactory.h",
468 "nattypes.cc",
469 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000470 "optionsfile.cc",
471 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000472 "profiler.cc",
473 "profiler.h",
474 "proxyserver.cc",
475 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000476 "referencecountedsingletonfactory.h",
477 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200478 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000479 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000480 "sslconfig.h",
481 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700482 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000483 "testclient.cc",
484 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000485 "transformadapter.cc",
486 "transformadapter.h",
487 "versionparsing.cc",
488 "versionparsing.h",
489 "virtualsocketserver.cc",
490 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000491 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000492 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200493 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000494 ]
495
kjellandera8a7ef62016-04-05 08:13:31 -0700496 if (is_linux) {
497 sources += [
498 "dbus.cc",
499 "dbus.h",
500 "libdbusglibsymboltable.cc",
501 "libdbusglibsymboltable.h",
502 "linuxfdwalk.c",
503 "linuxfdwalk.h",
504 ]
505 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000506
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000507 if (is_posix) {
508 sources += [
509 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000510 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000511 "posix.cc",
512 "posix.h",
513 ]
514 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000515
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000516 if (is_mac) {
517 sources += [
518 "macasyncsocket.cc",
519 "macasyncsocket.h",
520 "maccocoasocketserver.h",
521 "maccocoasocketserver.mm",
522 "macsocketserver.cc",
523 "macsocketserver.h",
524 "macwindowpicker.cc",
525 "macwindowpicker.h",
526 ]
527 }
528
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000529 if (is_win) {
530 sources += [
531 "diskcache_win32.cc",
532 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000533 "win32regkey.cc",
534 "win32regkey.h",
535 "win32socketinit.cc",
536 "win32socketinit.h",
537 "win32socketserver.cc",
538 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000539 ]
540 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700541
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000542 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000543 deps += [ "//third_party/jsoncpp" ]
544 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700545 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000546
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000547 # When defined changes the include path for json.h to where it is
548 # expected to be when building json outside of the standalone build.
549 defines += [ "WEBRTC_EXTERNAL_JSON" ]
550 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000551 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000552
svaldez7f7a8192016-04-18 11:13:11 -0700553 if (rtc_build_ssl) {
554 deps += [ "//third_party/boringssl" ]
555 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700556 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000557 }
558
559 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000560 sources += [
561 "ifaddrs-android.cc",
562 "ifaddrs-android.h",
563 ]
564
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000565 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000566 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200567 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000568 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000569 }
570
kjellandera8a7ef62016-04-05 08:13:31 -0700571 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200572 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700573 "maccocoathreadhelper.h",
574 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200575 "macconversion.cc",
576 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700577 "macifaddrs_converter.cc",
578 "scoped_autorelease_pool.h",
579 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200580 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000581 }
582
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000583 if (use_x11) {
584 sources += [
585 "x11windowpicker.cc",
586 "x11windowpicker.h",
587 ]
588 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000589 "dl",
590 "rt",
591 "Xext",
592 "X11",
593 "Xcomposite",
594 "Xrender",
595 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000596 }
597
598 if (is_linux) {
599 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000600 "dl",
601 "rt",
602 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000603 }
604
605 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000606 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000607 "macutils.cc",
608 "macutils.h",
609 ]
kjellander3bcedd32016-06-08 01:14:15 -0700610 libs += [
611 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
612 "ApplicationServices.framework",
613
614 # For GetGestalt in macutils.cc.
615 "CoreServices.framework",
616 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000617 }
618
619 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000620 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000621 "win32.cc",
622 "win32.h",
623 "win32filesystem.cc",
624 "win32filesystem.h",
625 "win32securityerrors.cc",
626 "win32window.cc",
627 "win32window.h",
628 "win32windowpicker.cc",
629 "win32windowpicker.h",
630 "winfirewall.cc",
631 "winfirewall.h",
632 "winping.cc",
633 "winping.h",
634 ]
635
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000636 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000637 "crypt32.lib",
638 "iphlpapi.lib",
639 "secur32.lib",
640 ]
641
642 cflags += [
643 # Suppress warnings about WIN32_LEAN_AND_MEAN.
644 "/wd4005",
645 "/wd4703",
646 ]
647
648 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000649 }
650
kjellandera8a7ef62016-04-05 08:13:31 -0700651 if (is_posix) {
652 sources += [
653 "ifaddrs_converter.cc",
654 "ifaddrs_converter.h",
655 "unixfilesystem.cc",
656 "unixfilesystem.h",
657 ]
658 if (is_debug) {
659 # The Chromium build/common.gypi defines this for all posix
660 # _except_ for ios & mac. We want it there as well, e.g.
661 # because ASSERT and friends trigger off of it.
662 defines += [ "_DEBUG" ]
663 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000664 }
665
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000666 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000667 defines += [ "CARBON_DEPRECATED=YES" ]
668 }
669
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000670 if (is_linux || is_android) {
671 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000672 "linux.cc",
673 "linux.h",
674 ]
675 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700676
677 if (is_nacl) {
678 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
679 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800680 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700681 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700682 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700683 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
684 configs -= [ "//build/config/clang:find_bad_constructs" ]
685 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000686}
tkchin42f580e2015-11-26 23:18:23 -0800687
kjellander988d31e2016-02-05 00:23:50 -0800688source_set("gtest_prod") {
689 sources = [
690 "gtest_prod_util.h",
691 ]
692}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200693
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200694if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700695 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200696 defines = [ "GTEST_RELATIVE_PATH" ]
697 }
698
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700699 config("rtc_base_tests_utils_warnings_config") {
700 if (is_win && is_clang) {
701 cflags = [
702 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
703 "-Wno-reorder",
704 "-Wno-sign-compare",
705 ]
706 }
707 }
708
kjellander82a94492016-06-12 22:12:01 -0700709 source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200710 testonly = true
711 sources = [
712 # Also use this as a convenient dumping ground for misc files that are
713 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700714 "fakeclock.cc",
715 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200716 "fakenetwork.h",
717 "fakesslidentity.h",
718 "faketaskrunner.h",
719 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700720 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200721 "testbase64.h",
722 "testechoserver.h",
723 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700724 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200725 "unittest_main.cc",
726 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700727 configs += [
728 "..:common_config",
729 ":rtc_base_tests_utils_warnings_config",
730 ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200731 public_configs = [
732 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700733 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200734 ]
735 deps = [
736 ":rtc_base",
737 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200738 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200739 ]
740 public_deps = [
741 "//testing/gtest",
742 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700743
744 if (is_clang) {
745 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
746 configs -= [ "//build/config/clang:find_bad_constructs" ]
747 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200748 }
749}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200750
751if (is_android) {
752 android_library("base_java") {
753 java_files = [
754 "java/src/org/webrtc/Logging.java",
755 "java/src/org/webrtc/Size.java",
756 "java/src/org/webrtc/ThreadUtils.java",
757 ]
758
759 deps = [
760 "//base:base_java",
761 ]
762 }
763}