blob: e166a4f7ba3f45274d33fd8e89b099196df1dc3e [file] [log] [blame]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +00001# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS. All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9import("//build/config/crypto.gni")
henrike@webrtc.orgfb1eb432014-08-15 14:44:13 +000010import("//build/config/ui.gni")
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000011import("../build/webrtc.gni")
12
kjellander70bed7d2015-11-23 17:23:44 -080013import("//build_overrides/webrtc.gni")
kjellander70bed7d2015-11-23 17:23:44 -080014
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +020015if (is_android) {
16 import("//build/config/android/config.gni")
17 import("//build/config/android/rules.gni")
18}
19
kjellander84ba8b62016-04-24 23:03:07 -070020config("rtc_base_approved_all_dependent_config") {
21 if (is_mac && !build_with_chromium) {
22 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
23 }
24}
25
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000026config("rtc_base_config") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000027 include_dirs = [
28 "//third_party/jsoncpp/overrides/include",
29 "//third_party/jsoncpp/source/include",
30 ]
31
32 defines = [
33 "FEATURE_ENABLE_SSL",
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000034 "LOGGING=1",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000035 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000036}
37
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000038config("rtc_base_chromium_config") {
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020039 defines = [ "NO_MAIN_THREAD_WRAPPING" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000040}
41
42config("openssl_config") {
43 defines = [
44 "SSL_USE_OPENSSL",
45 "HAVE_OPENSSL_SSL_H",
46 ]
47}
48
kjellanderb1f14062016-04-25 00:01:36 -070049config("rtc_base_all_dependent_config") {
50 if (is_ios) {
51 libs = [
52 "CFNetwork.framework",
Zeke Chin2d3b7e22015-07-14 12:55:44 -070053
kjellanderb1f14062016-04-25 00:01:36 -070054 #"Foundation.framework", # Already in //build/config:default_libs.
55 "Security.framework",
56 "SystemConfiguration.framework",
kjellander3bcedd32016-06-08 01:14:15 -070057 "UIKit.framework",
kjellanderb1f14062016-04-25 00:01:36 -070058 ]
59 }
60 if (is_mac) {
61 libs = [
62 "Cocoa.framework",
63 "Foundation.framework",
64 "IOKit.framework",
65 "Security.framework",
66 "SystemConfiguration.framework",
67 ]
68 if (current_cpu == "x86") {
kjellander781e0c02016-06-13 05:41:11 -070069 libs += [ "Carbon.framework" ]
kjellanderb1f14062016-04-25 00:01:36 -070070 }
71 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000072}
73
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000074if (is_linux && !build_with_chromium) {
75 # Provides the same functionality as the //crypto:platform target, which
76 # WebRTC cannot use as we don't sync src/crypto from Chromium.
77 group("linux_system_ssl") {
svaldez7f7a8192016-04-18 11:13:11 -070078 deps = [
79 "//third_party/boringssl",
80 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000081 }
82}
83
kjellanderec5c9062016-08-19 01:07:30 -070084if (!rtc_build_ssl) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000085 config("external_ssl_library") {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000086 assert(rtc_ssl_root != "",
87 "You must specify rtc_ssl_root when rtc_build_ssl==0.")
88 include_dirs = [ rtc_ssl_root ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000089 }
90}
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000091
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000092# The subset of rtc_base approved for use outside of libjingle.
93static_library("rtc_base_approved") {
tommic06b1332016-05-14 11:31:40 -070094 defines = []
aleloi16f55a12016-08-23 08:08:23 -070095 libs = []
Peter Boström11e02292015-11-25 21:36:14 +010096 deps = []
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000097 configs += [ "..:common_config" ]
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +000098 public_configs = [ "..:common_inherited_config" ]
kjellander84ba8b62016-04-24 23:03:07 -070099 all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ]
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000100
101 sources = [
Karl Wiberge2a83ee2015-10-26 19:51:29 +0100102 "array_view.h",
Peter Boströmff019b02015-04-30 14:16:07 +0200103 "atomicops.h",
Tommicc4fdde2016-04-22 19:34:59 +0200104 "bind.h",
Noah Richards915590e2015-04-22 15:43:08 -0700105 "bitbuffer.cc",
106 "bitbuffer.h",
Karl Wiberg94784372015-04-20 14:03:07 +0200107 "buffer.h",
Joachim Bauch6f2ef742015-05-21 17:52:01 +0200108 "bufferqueue.cc",
109 "bufferqueue.h",
Noah Richards915590e2015-04-22 15:43:08 -0700110 "bytebuffer.cc",
111 "bytebuffer.h",
112 "byteorder.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000113 "checks.cc",
114 "checks.h",
Peter Boströmfd5dae32015-11-26 12:54:24 +0100115 "constructormagic.h",
tommiebfbab52016-03-19 11:36:18 -0700116 "copyonwritebuffer.cc",
117 "copyonwritebuffer.h",
Tommi494f2092015-04-27 17:39:23 +0200118 "criticalsection.cc",
119 "criticalsection.h",
kwiberg45fd9fe2015-12-16 01:09:16 -0800120 "deprecation.h",
tommi@webrtc.org4c0fd962015-02-09 10:23:27 +0000121 "event.cc",
122 "event.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000123 "event_tracer.cc",
124 "event_tracer.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000125 "exp_filter.cc",
126 "exp_filter.h",
ivoc48052312016-08-25 04:43:45 -0700127 "format_macros.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700128 "location.cc",
129 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000130 "md5.cc",
131 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000132 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000133 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700134 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700135 "onetimeevent.h",
Karl Wibergbe579832015-11-10 22:34:18 +0100136 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000137 "platform_file.cc",
138 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200139 "platform_thread.cc",
140 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800141 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200142 "race_checker.cc",
143 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800144 "random.cc",
145 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700146 "rate_limiter.cc",
147 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800148 "rate_statistics.cc",
149 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700150 "ratetracker.cc",
151 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800152 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800153 "safe_conversions.h",
154 "safe_conversions_impl.h",
tommi04af8392016-02-14 08:11:10 -0800155 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000156 "stringencode.cc",
157 "stringencode.h",
158 "stringutils.cc",
159 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700160 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700161 "systeminfo.cc",
162 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000163 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000164 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000165 "thread_checker.h",
166 "thread_checker_impl.cc",
167 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700168 "timestampaligner.cc",
169 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000170 "timeutils.cc",
171 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000172 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000173 ]
Noah Richards915590e2015-04-22 15:43:08 -0700174
aleloi16f55a12016-08-23 08:08:23 -0700175 if (is_android) {
176 libs += [ "log" ]
177 }
178
Peter Boström11e02292015-11-25 21:36:14 +0100179 if (build_with_chromium) {
180 # Dependency on chromium's logging (in //base).
181 deps += [ "//base:base" ]
182 sources += [
183 "../../webrtc_overrides/webrtc/base/logging.cc",
184 "../../webrtc_overrides/webrtc/base/logging.h",
185 ]
186 include_dirs = [ "../../webrtc_overrides" ]
187 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700188 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200189 "logging.cc",
190 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200191 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700192 ]
193 }
tommi09c60da2016-05-24 11:40:35 -0700194}
195
Per33b9c8f2016-07-15 08:25:42 +0200196config("enable_libevent_config") {
197 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
198}
199
tommi09c60da2016-05-24 11:40:35 -0700200static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700201 public_deps = [
202 ":rtc_base_approved",
203 ]
tommi09c60da2016-05-24 11:40:35 -0700204 configs += [ "..:common_config" ]
205
206 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700207 "sequenced_task_checker.h",
208 "sequenced_task_checker_impl.cc",
209 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700210 ]
tommic06b1332016-05-14 11:31:40 -0700211
perkj84bd5c72016-08-30 23:01:06 -0700212 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700213 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700214 "../../webrtc_overrides/webrtc/base/task_queue.cc",
215 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700216 ]
perkj84bd5c72016-08-30 23:01:06 -0700217 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700218 } else {
perkj84bd5c72016-08-30 23:01:06 -0700219 sources += [
220 "task_queue.h",
221 "task_queue_posix.h",
222 ]
223 if (rtc_build_libevent) {
224 deps = [
225 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700226 ]
227 }
perkj84bd5c72016-08-30 23:01:06 -0700228
229 if (rtc_enable_libevent) {
230 sources += [
231 "task_queue_libevent.cc",
232 "task_queue_posix.cc",
233 ]
234 all_dependent_configs = [ ":enable_libevent_config" ]
235 } else {
236 if (is_mac || is_ios) {
237 sources += [
238 "task_queue_gcd.cc",
239 "task_queue_posix.cc",
240 ]
241 }
242 if (is_win) {
243 sources += [ "task_queue_win.cc" ]
244 }
phoglundff274392016-05-17 03:44:28 -0700245 }
tommic06b1332016-05-14 11:31:40 -0700246 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000247}
248
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700249config("rtc_base_warnings_config") {
250 if (is_win && is_clang) {
251 cflags = [
252 # Disable warnings failing when compiling with Clang on Windows.
253 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
254 "-Wno-sign-compare",
255 "-Wno-missing-braces",
256 ]
257 }
258}
259
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000260static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000261 cflags = []
262 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000263 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700264 deps = [
265 "..:webrtc_common",
266 ]
Tommid44c0772016-03-11 17:12:32 -0800267 public_deps = [
268 ":rtc_base_approved",
269 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000270
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000271 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000272 "..:common_config",
sdefresne0db3db92016-03-21 11:20:28 -0700273 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000274 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000275 ]
276
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000277 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000278 "..:common_inherited_config",
sdefresne0db3db92016-03-21 11:20:28 -0700279 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000280 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000281 ]
282
kjellanderb1f14062016-04-25 00:01:36 -0700283 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200284 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000285
286 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000287 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000288 "asyncfile.cc",
289 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700290 "asyncinvoker-inl.h",
291 "asyncinvoker.cc",
292 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000293 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000294 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000295 "asyncresolverinterface.cc",
296 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000297 "asyncsocket.cc",
298 "asyncsocket.h",
299 "asynctcpsocket.cc",
300 "asynctcpsocket.h",
301 "asyncudpsocket.cc",
302 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000303 "autodetectproxy.cc",
304 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000305 "base64.cc",
306 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000307 "common.cc",
308 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000309 "crc32.cc",
310 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000311 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000312 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "diskcache.cc",
314 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700315 "filerotatingstream.cc",
316 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000317 "fileutils.cc",
318 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000319 "firewallsocketserver.cc",
320 "firewallsocketserver.h",
321 "flags.cc",
322 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000323 "gunit_prod.h",
324 "helpers.cc",
325 "helpers.h",
326 "httpbase.cc",
327 "httpbase.h",
328 "httpclient.cc",
329 "httpclient.h",
330 "httpcommon-inl.h",
331 "httpcommon.cc",
332 "httpcommon.h",
333 "httprequest.cc",
334 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000335 "iosfilesystem.mm",
336 "ipaddress.cc",
337 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000338 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000339 "messagedigest.cc",
340 "messagedigest.h",
341 "messagehandler.cc",
342 "messagehandler.h",
343 "messagequeue.cc",
344 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000345 "nethelpers.cc",
346 "nethelpers.h",
347 "network.cc",
348 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700349 "networkmonitor.cc",
350 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700351 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000352 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700353 "openssl.h",
354 "openssladapter.cc",
355 "openssladapter.h",
356 "openssldigest.cc",
357 "openssldigest.h",
358 "opensslidentity.cc",
359 "opensslidentity.h",
360 "opensslstreamadapter.cc",
361 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000362 "pathutils.cc",
363 "pathutils.h",
364 "physicalsocketserver.cc",
365 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000366 "proxydetect.cc",
367 "proxydetect.h",
368 "proxyinfo.cc",
369 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000370 "ratelimiter.cc",
371 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200372 "rtccertificate.cc",
373 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200374 "rtccertificategenerator.cc",
375 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000376 "sha1.cc",
377 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000378 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000379 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800380 "sharedexclusivelock.cc",
381 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000382 "signalthread.cc",
383 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000384 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000385 "sigslot.h",
386 "sigslotrepeater.h",
387 "socket.h",
388 "socketadapters.cc",
389 "socketadapters.h",
390 "socketaddress.cc",
391 "socketaddress.h",
392 "socketaddresspair.cc",
393 "socketaddresspair.h",
394 "socketfactory.h",
395 "socketpool.cc",
396 "socketpool.h",
397 "socketserver.h",
398 "socketstream.cc",
399 "socketstream.h",
400 "ssladapter.cc",
401 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000402 "sslfingerprint.cc",
403 "sslfingerprint.h",
404 "sslidentity.cc",
405 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000406 "sslsocketfactory.cc",
407 "sslsocketfactory.h",
408 "sslstreamadapter.cc",
409 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000410 "stream.cc",
411 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000412 "task.cc",
413 "task.h",
414 "taskparent.cc",
415 "taskparent.h",
416 "taskrunner.cc",
417 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000418 "thread.cc",
419 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000420 "timing.cc",
421 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000422 "urlencode.cc",
423 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000424 "worker.cc",
425 "worker.h",
426 ]
427
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700428 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
429 # compiler settings.
430 configs -= [ "//build/config/compiler:chromium_code" ]
431 configs += [ "//build/config/compiler:no_chromium_code" ]
432 if (!is_win) {
433 cflags += [ "-Wno-uninitialized" ]
434 }
435
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000436 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000437 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700438 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000439 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000440
441 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700442 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000443 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000444 ]
445
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000446 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000447 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700448 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000449 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000450 "bandwidthsmoother.cc",
451 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000452 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000453 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000454 "httpserver.cc",
455 "httpserver.h",
456 "json.cc",
457 "json.h",
tkchin93411912015-07-22 12:12:17 -0700458 "logsinks.cc",
459 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000460 "mathutils.h",
461 "multipart.cc",
462 "multipart.h",
463 "natserver.cc",
464 "natserver.h",
465 "natsocketfactory.cc",
466 "natsocketfactory.h",
467 "nattypes.cc",
468 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000469 "optionsfile.cc",
470 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000471 "profiler.cc",
472 "profiler.h",
473 "proxyserver.cc",
474 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000475 "referencecountedsingletonfactory.h",
476 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200477 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000478 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000479 "sslconfig.h",
480 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700481 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000482 "testclient.cc",
483 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000484 "transformadapter.cc",
485 "transformadapter.h",
486 "versionparsing.cc",
487 "versionparsing.h",
488 "virtualsocketserver.cc",
489 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000490 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000491 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200492 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000493 ]
494
kjellandera8a7ef62016-04-05 08:13:31 -0700495 if (is_linux) {
496 sources += [
497 "dbus.cc",
498 "dbus.h",
499 "libdbusglibsymboltable.cc",
500 "libdbusglibsymboltable.h",
501 "linuxfdwalk.c",
502 "linuxfdwalk.h",
503 ]
504 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000505
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000506 if (is_posix) {
507 sources += [
508 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000509 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000510 "posix.cc",
511 "posix.h",
512 ]
513 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000514
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000515 if (is_mac) {
516 sources += [
517 "macasyncsocket.cc",
518 "macasyncsocket.h",
519 "maccocoasocketserver.h",
520 "maccocoasocketserver.mm",
521 "macsocketserver.cc",
522 "macsocketserver.h",
523 "macwindowpicker.cc",
524 "macwindowpicker.h",
525 ]
526 }
527
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000528 if (is_win) {
529 sources += [
530 "diskcache_win32.cc",
531 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000532 "win32regkey.cc",
533 "win32regkey.h",
534 "win32socketinit.cc",
535 "win32socketinit.h",
536 "win32socketserver.cc",
537 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000538 ]
539 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700540
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000541 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000542 deps += [ "//third_party/jsoncpp" ]
543 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700544 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000545
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000546 # When defined changes the include path for json.h to where it is
547 # expected to be when building json outside of the standalone build.
548 defines += [ "WEBRTC_EXTERNAL_JSON" ]
549 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000550 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000551
svaldez7f7a8192016-04-18 11:13:11 -0700552 if (rtc_build_ssl) {
553 deps += [ "//third_party/boringssl" ]
554 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700555 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000556 }
557
558 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000559 sources += [
560 "ifaddrs-android.cc",
561 "ifaddrs-android.h",
562 ]
563
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000564 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000565 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200566 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000567 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000568 }
569
kjellandera8a7ef62016-04-05 08:13:31 -0700570 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200571 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700572 "maccocoathreadhelper.h",
573 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200574 "macconversion.cc",
575 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700576 "macifaddrs_converter.cc",
577 "scoped_autorelease_pool.h",
578 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200579 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000580 }
581
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000582 if (use_x11) {
583 sources += [
584 "x11windowpicker.cc",
585 "x11windowpicker.h",
586 ]
587 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000588 "dl",
589 "rt",
590 "Xext",
591 "X11",
592 "Xcomposite",
593 "Xrender",
594 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000595 }
596
597 if (is_linux) {
598 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000599 "dl",
600 "rt",
601 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000602 }
603
604 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000605 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000606 "macutils.cc",
607 "macutils.h",
608 ]
kjellander3bcedd32016-06-08 01:14:15 -0700609 libs += [
610 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
611 "ApplicationServices.framework",
612
613 # For GetGestalt in macutils.cc.
614 "CoreServices.framework",
615 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000616 }
617
618 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000619 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000620 "win32.cc",
621 "win32.h",
622 "win32filesystem.cc",
623 "win32filesystem.h",
624 "win32securityerrors.cc",
625 "win32window.cc",
626 "win32window.h",
627 "win32windowpicker.cc",
628 "win32windowpicker.h",
629 "winfirewall.cc",
630 "winfirewall.h",
631 "winping.cc",
632 "winping.h",
633 ]
634
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000635 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000636 "crypt32.lib",
637 "iphlpapi.lib",
638 "secur32.lib",
639 ]
640
641 cflags += [
642 # Suppress warnings about WIN32_LEAN_AND_MEAN.
643 "/wd4005",
644 "/wd4703",
645 ]
646
647 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000648 }
649
kjellandera8a7ef62016-04-05 08:13:31 -0700650 if (is_posix) {
651 sources += [
652 "ifaddrs_converter.cc",
653 "ifaddrs_converter.h",
654 "unixfilesystem.cc",
655 "unixfilesystem.h",
656 ]
657 if (is_debug) {
658 # The Chromium build/common.gypi defines this for all posix
659 # _except_ for ios & mac. We want it there as well, e.g.
660 # because ASSERT and friends trigger off of it.
661 defines += [ "_DEBUG" ]
662 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000663 }
664
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000665 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000666 defines += [ "CARBON_DEPRECATED=YES" ]
667 }
668
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000669 if (is_linux || is_android) {
670 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000671 "linux.cc",
672 "linux.h",
673 ]
674 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700675
676 if (is_nacl) {
677 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
678 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800679 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700680 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700681 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700682 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
683 configs -= [ "//build/config/clang:find_bad_constructs" ]
684 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000685}
tkchin42f580e2015-11-26 23:18:23 -0800686
kjellander988d31e2016-02-05 00:23:50 -0800687source_set("gtest_prod") {
688 sources = [
689 "gtest_prod_util.h",
690 ]
691}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200692
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200693if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700694 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200695 defines = [ "GTEST_RELATIVE_PATH" ]
696 }
697
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700698 config("rtc_base_tests_utils_warnings_config") {
699 if (is_win && is_clang) {
700 cflags = [
701 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
702 "-Wno-reorder",
703 "-Wno-sign-compare",
704 ]
705 }
706 }
707
kjellander82a94492016-06-12 22:12:01 -0700708 source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200709 testonly = true
710 sources = [
711 # Also use this as a convenient dumping ground for misc files that are
712 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700713 "fakeclock.cc",
714 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200715 "fakenetwork.h",
716 "fakesslidentity.h",
717 "faketaskrunner.h",
718 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700719 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200720 "testbase64.h",
721 "testechoserver.h",
722 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700723 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200724 "unittest_main.cc",
725 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700726 configs += [
727 "..:common_config",
728 ":rtc_base_tests_utils_warnings_config",
729 ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200730 public_configs = [
731 "..:common_inherited_config",
kjellander82a94492016-06-12 22:12:01 -0700732 ":rtc_base_tests_utils_exported_config",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200733 ]
734 deps = [
735 ":rtc_base",
736 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200737 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200738 ]
739 public_deps = [
740 "//testing/gtest",
741 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700742
743 if (is_clang) {
744 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
745 configs -= [ "//build/config/clang:find_bad_constructs" ]
746 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200747 }
748}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200749
750if (is_android) {
751 android_library("base_java") {
752 java_files = [
753 "java/src/org/webrtc/Logging.java",
754 "java/src/org/webrtc/Size.java",
755 "java/src/org/webrtc/ThreadUtils.java",
756 ]
757
758 deps = [
759 "//base:base_java",
760 ]
761 }
762}