blob: 60bed6e53b03258ef85da2b03dd417dcc3515070 [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
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000013config("rtc_base_config") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000014 include_dirs = [
15 "//third_party/jsoncpp/overrides/include",
16 "//third_party/jsoncpp/source/include",
17 ]
18
19 defines = [
20 "FEATURE_ENABLE_SSL",
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000021 "LOGGING=1",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000022 ]
23
Henrik Kjellandere555b7b2015-04-22 08:49:52 +020024 if (is_posix) {
25 # TODO(henrike): issue 3307, make rtc_base build without disabling
26 # these flags.
27 cflags_cc = [ "-Wno-non-virtual-dtor" ]
28 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000029}
30
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000031config("rtc_base_chromium_config") {
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020032 defines = [ "NO_MAIN_THREAD_WRAPPING" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000033}
34
35config("openssl_config") {
36 defines = [
37 "SSL_USE_OPENSSL",
38 "HAVE_OPENSSL_SSL_H",
39 ]
40}
41
henrike@webrtc.org33a0e2d2014-10-27 18:13:40 +000042config("nss_config") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000043 defines = [
44 "SSL_USE_NSS",
45 "HAVE_NSS_SSL_H",
46 "SSL_USE_NSS_RNG",
47 ]
48}
49
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000050config("ios_config") {
kjellander@webrtc.org556caff2014-12-19 13:28:37 +000051 libs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000052 #"Foundation.framework", # Already included in //build/config:default_libs.
53 "Security.framework",
54 "SystemConfiguration.framework",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020055
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000056 #"UIKit.framework", # Already included in //build/config:default_libs.
57 ]
58}
59
60config("mac_config") {
kjellander@webrtc.org556caff2014-12-19 13:28:37 +000061 libs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000062 "Cocoa.framework",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020063
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000064 #"Foundation.framework", # Already included in //build/config:default_libs.
65 #"IOKit.framework", # Already included in //build/config:default_libs.
66 #"Security.framework", # Already included in //build/config:default_libs.
67 "SystemConfiguration.framework",
68 ]
69}
70
71config("mac_x86_config") {
72 libs = [
73 #"Carbon.framework", # Already included in //build/config:default_libs.
74 ]
75}
76
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000077if (is_linux && !build_with_chromium) {
78 # Provides the same functionality as the //crypto:platform target, which
79 # WebRTC cannot use as we don't sync src/crypto from Chromium.
80 group("linux_system_ssl") {
81 if (use_openssl) {
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020082 deps = [
83 "//third_party/boringssl",
84 ]
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000085 } else {
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020086 deps = [
87 "//net/third_party/nss/ssl:libssl",
88 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000089
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +000090 public_configs = [
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000091 "//net/third_party/nss/ssl:ssl_config",
92 "//third_party/nss:system_nss_no_ssl_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000093 ]
94 }
95 }
96}
97
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000098if (rtc_build_ssl == 0) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000099 config("external_ssl_library") {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000100 assert(rtc_ssl_root != "",
101 "You must specify rtc_ssl_root when rtc_build_ssl==0.")
102 include_dirs = [ rtc_ssl_root ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000103 }
104}
kjellander@webrtc.org4a251992014-08-18 17:56:28 +0000105
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000106# The subset of rtc_base approved for use outside of libjingle.
107static_library("rtc_base_approved") {
108 configs += [ "..:common_config" ]
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000109 public_configs = [ "..:common_inherited_config" ]
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000110
111 sources = [
Peter Boströmff019b02015-04-30 14:16:07 +0200112 "atomicops.h",
Noah Richards915590e2015-04-22 15:43:08 -0700113 "bitbuffer.cc",
114 "bitbuffer.h",
Karl Wiberg94784372015-04-20 14:03:07 +0200115 "buffer.cc",
116 "buffer.h",
Joachim Bauch6f2ef742015-05-21 17:52:01 +0200117 "bufferqueue.cc",
118 "bufferqueue.h",
Noah Richards915590e2015-04-22 15:43:08 -0700119 "bytebuffer.cc",
120 "bytebuffer.h",
121 "byteorder.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000122 "checks.cc",
123 "checks.h",
Tommi494f2092015-04-27 17:39:23 +0200124 "criticalsection.cc",
125 "criticalsection.h",
tommi@webrtc.org4c0fd962015-02-09 10:23:27 +0000126 "event.cc",
127 "event.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000128 "event_tracer.cc",
129 "event_tracer.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000130 "exp_filter.cc",
131 "exp_filter.h",
132 "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",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000136 "platform_file.cc",
137 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200138 "platform_thread.cc",
139 "platform_thread.h",
andrew@webrtc.org0ab42bc2014-12-17 22:56:09 +0000140 "safe_conversions.h",
141 "safe_conversions_impl.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000142 "stringencode.cc",
143 "stringencode.h",
144 "stringutils.cc",
145 "stringutils.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000146 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000147 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000148 "thread_checker.h",
149 "thread_checker_impl.cc",
150 "thread_checker_impl.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000151 "timeutils.cc",
152 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000153 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000154 ]
Noah Richards915590e2015-04-22 15:43:08 -0700155
156 if (build_with_chromium) {
157 sources += [
158 "../overrides/webrtc/base/basictypes.h",
159 "../overrides/webrtc/base/constructormagic.h",
160 ]
161 } else {
162 sources += [
163 "basictypes.h",
164 "constructormagic.h",
Tommi23edcff2015-05-25 10:45:43 +0200165 "logging.cc",
166 "logging.h",
Noah Richards915590e2015-04-22 15:43:08 -0700167 ]
168 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000169}
170
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000171static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000172 cflags = []
173 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000174 libs = []
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000175 deps = [
176 ":rtc_base_approved",
177 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000178
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000179 configs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000180 "..:common_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000181 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000182 ]
183
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000184 public_configs = [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000185 "..:common_inherited_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000186 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000187 ]
188
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200189 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000190
191 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000192 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000193 "asyncfile.cc",
194 "asyncfile.h",
195 "asynchttprequest.cc",
196 "asynchttprequest.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700197 "asyncinvoker-inl.h",
198 "asyncinvoker.cc",
199 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000200 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000201 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000202 "asyncresolverinterface.cc",
203 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000204 "asyncsocket.cc",
205 "asyncsocket.h",
206 "asynctcpsocket.cc",
207 "asynctcpsocket.h",
208 "asyncudpsocket.cc",
209 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000210 "autodetectproxy.cc",
211 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000212 "base64.cc",
213 "base64.h",
214 "basicdefs.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000215 "common.cc",
216 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000217 "cpumonitor.cc",
218 "cpumonitor.h",
219 "crc32.cc",
220 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000221 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000222 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000223 "diskcache.cc",
224 "diskcache.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000225 "fileutils.cc",
226 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000227 "firewallsocketserver.cc",
228 "firewallsocketserver.h",
229 "flags.cc",
230 "flags.h",
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +0000231 "format_macros.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000232 "gunit_prod.h",
233 "helpers.cc",
234 "helpers.h",
235 "httpbase.cc",
236 "httpbase.h",
237 "httpclient.cc",
238 "httpclient.h",
239 "httpcommon-inl.h",
240 "httpcommon.cc",
241 "httpcommon.h",
242 "httprequest.cc",
243 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000244 "iosfilesystem.mm",
245 "ipaddress.cc",
246 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000247 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000248 "mathutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000249 "messagedigest.cc",
250 "messagedigest.h",
251 "messagehandler.cc",
252 "messagehandler.h",
253 "messagequeue.cc",
254 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000255 "nethelpers.cc",
256 "nethelpers.h",
257 "network.cc",
258 "network.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000259 "nullsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000260 "pathutils.cc",
261 "pathutils.h",
262 "physicalsocketserver.cc",
263 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000264 "proxydetect.cc",
265 "proxydetect.h",
266 "proxyinfo.cc",
267 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000268 "ratelimiter.cc",
269 "ratelimiter.h",
270 "ratetracker.cc",
271 "ratetracker.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000272 "scoped_autorelease_pool.h",
273 "scoped_autorelease_pool.mm",
274 "scoped_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000275 "sha1.cc",
276 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000277 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000278 "sha1digest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000279 "signalthread.cc",
280 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000281 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000282 "sigslot.h",
283 "sigslotrepeater.h",
284 "socket.h",
285 "socketadapters.cc",
286 "socketadapters.h",
287 "socketaddress.cc",
288 "socketaddress.h",
289 "socketaddresspair.cc",
290 "socketaddresspair.h",
291 "socketfactory.h",
292 "socketpool.cc",
293 "socketpool.h",
294 "socketserver.h",
295 "socketstream.cc",
296 "socketstream.h",
297 "ssladapter.cc",
298 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000299 "sslfingerprint.cc",
300 "sslfingerprint.h",
301 "sslidentity.cc",
302 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000303 "sslsocketfactory.cc",
304 "sslsocketfactory.h",
305 "sslstreamadapter.cc",
306 "sslstreamadapter.h",
307 "sslstreamadapterhelper.cc",
308 "sslstreamadapterhelper.h",
309 "stream.cc",
310 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000311 "systeminfo.cc",
312 "systeminfo.h",
313 "task.cc",
314 "task.h",
315 "taskparent.cc",
316 "taskparent.h",
317 "taskrunner.cc",
318 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000319 "thread.cc",
320 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000321 "timing.cc",
322 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000323 "urlencode.cc",
324 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000325 "worker.cc",
326 "worker.h",
327 ]
328
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000329 if (is_posix) {
330 sources += [
331 "unixfilesystem.cc",
332 "unixfilesystem.h",
333 ]
334 }
335
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000336 if (build_with_chromium) {
337 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000338 "../overrides/webrtc/base/logging.cc",
339 "../overrides/webrtc/base/logging.h",
340 ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000341
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000342 deps += [ "..:webrtc_common" ]
343
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000344 if (is_win) {
345 sources += [ "../overrides/webrtc/base/win32socketinit.cc" ]
346 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000347
348 include_dirs = [
349 "../overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000350 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000351 ]
352
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000353 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000354 } else {
355 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000356 "bandwidthsmoother.cc",
357 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000358 "bind.h",
359 "bind.h.pump",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000360 "callback.h",
361 "callback.h.pump",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000362 "fileutils_mock.h",
363 "genericslot.h",
364 "genericslot.h.pump",
365 "httpserver.cc",
366 "httpserver.h",
367 "json.cc",
368 "json.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000369 "mathutils.h",
370 "multipart.cc",
371 "multipart.h",
372 "natserver.cc",
373 "natserver.h",
374 "natsocketfactory.cc",
375 "natsocketfactory.h",
376 "nattypes.cc",
377 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000378 "optionsfile.cc",
379 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000380 "profiler.cc",
381 "profiler.h",
382 "proxyserver.cc",
383 "proxyserver.h",
384 "refcount.h",
385 "referencecountedsingletonfactory.h",
386 "rollingaccumulator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000387 "scoped_ref_ptr.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200388 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000389 "sec_buffer.h",
tommi@webrtc.orgfe196992015-02-07 22:35:54 +0000390 "sharedexclusivelock.cc",
391 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000392 "sslconfig.h",
393 "sslroots.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000394 "testclient.cc",
395 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000396 "transformadapter.cc",
397 "transformadapter.h",
398 "versionparsing.cc",
399 "versionparsing.h",
400 "virtualsocketserver.cc",
401 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000402 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000403 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200404 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000405 ]
406
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000407 deps += [ "..:webrtc_common" ]
408
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000409 if (is_posix) {
410 sources += [
411 "latebindingsymboltable.cc",
412 "latebindingsymboltable.cc.def",
413 "latebindingsymboltable.h",
414 "latebindingsymboltable.h.def",
415 "posix.cc",
416 "posix.h",
417 ]
418 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000419
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000420 if (is_linux) {
421 sources += [
422 "dbus.cc",
423 "dbus.h",
424 "libdbusglibsymboltable.cc",
425 "libdbusglibsymboltable.h",
426 "linuxfdwalk.c",
427 "linuxfdwalk.h",
henrike@webrtc.orgfb1eb432014-08-15 14:44:13 +0000428 ]
429 }
430
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000431 if (is_mac) {
432 sources += [
433 "macasyncsocket.cc",
434 "macasyncsocket.h",
435 "maccocoasocketserver.h",
436 "maccocoasocketserver.mm",
437 "macsocketserver.cc",
438 "macsocketserver.h",
439 "macwindowpicker.cc",
440 "macwindowpicker.h",
441 ]
442 }
443
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000444 if (is_win) {
445 sources += [
446 "diskcache_win32.cc",
447 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000448 "win32regkey.cc",
449 "win32regkey.h",
450 "win32socketinit.cc",
451 "win32socketinit.h",
452 "win32socketserver.cc",
453 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000454 ]
455 }
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000456 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000457 deps += [ "//third_party/jsoncpp" ]
458 } else {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000459 include_dirs += [ rtc_jsoncpp_root ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000460
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000461 # When defined changes the include path for json.h to where it is
462 # expected to be when building json outside of the standalone build.
463 defines += [ "WEBRTC_EXTERNAL_JSON" ]
464 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000465 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000466
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000467 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
kjellander@webrtc.org62711f82014-06-29 13:37:08 +0000468 # compiler settings.
469 configs -= [ "//build/config/compiler:chromium_code" ]
470 configs += [ "//build/config/compiler:no_chromium_code" ]
kjellander@webrtc.orgc8bc7172014-12-12 12:10:46 +0000471 if (!is_win) {
472 cflags += [ "-Wno-uninitialized" ]
473 cflags_cc += [ "-Wno-non-virtual-dtor" ]
474 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000475
476 if (use_openssl) {
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000477 public_configs += [ ":openssl_config" ]
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000478 if (rtc_build_ssl) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000479 deps += [ "//third_party/boringssl" ]
480 } else {
481 configs += [ "external_ssl_library" ]
482 }
pthatcher@webrtc.org5d0071f2014-09-26 18:53:40 +0000483 sources += [
484 "openssl.h",
485 "openssladapter.cc",
486 "openssladapter.h",
487 "openssldigest.cc",
488 "openssldigest.h",
489 "opensslidentity.cc",
490 "opensslidentity.h",
491 "opensslstreamadapter.cc",
492 "opensslstreamadapter.h",
493 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000494 } else {
henrike@webrtc.org33a0e2d2014-10-27 18:13:40 +0000495 public_configs += [ ":nss_config" ]
496 if (rtc_build_ssl) {
497 if (build_with_chromium) {
498 deps += [ "//crypto:platform" ]
499 } else {
500 deps += [ "//net/third_party/nss/ssl:libssl" ]
501 if (is_linux) {
502 deps += [ ":linux_system_ssl" ]
503 } else {
504 deps += [
505 "//third_party/nss:nspr",
506 "//third_party/nss:nss",
507 ]
508 }
509 }
510 } else {
511 configs += [ "external_ssl_library" ]
512 }
pthatcher@webrtc.org5d0071f2014-09-26 18:53:40 +0000513 sources += [
514 "nssidentity.cc",
515 "nssidentity.h",
516 "nssstreamadapter.cc",
517 "nssstreamadapter.h",
518 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000519 }
520
521 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000522 sources += [
523 "ifaddrs-android.cc",
524 "ifaddrs-android.h",
525 ]
526
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000527 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000528 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200529 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000530 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000531 }
532
533 if (is_ios) {
534 all_dependent_configs += [ ":ios_config" ]
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200535
536 sources += [
537 "macconversion.cc",
538 "macconversion.h",
539 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000540 }
541
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000542 if (use_x11) {
543 sources += [
544 "x11windowpicker.cc",
545 "x11windowpicker.h",
546 ]
547 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000548 "dl",
549 "rt",
550 "Xext",
551 "X11",
552 "Xcomposite",
553 "Xrender",
554 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000555 }
556
557 if (is_linux) {
558 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000559 "dl",
560 "rt",
561 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000562 }
563
564 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000565 sources += [
566 "maccocoathreadhelper.h",
567 "maccocoathreadhelper.mm",
568 "macconversion.cc",
569 "macconversion.h",
570 "macutils.cc",
571 "macutils.h",
572 ]
573
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000574 all_dependent_configs = [ ":mac_config" ]
575
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000576 if (current_cpu == "x86") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000577 all_dependent_configs += [ ":mac_x86_config" ]
578 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000579 }
580
581 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000582 sources += [
583 "schanneladapter.cc",
584 "schanneladapter.h",
585 "win32.cc",
586 "win32.h",
587 "win32filesystem.cc",
588 "win32filesystem.h",
589 "win32securityerrors.cc",
590 "win32window.cc",
591 "win32window.h",
592 "win32windowpicker.cc",
593 "win32windowpicker.h",
594 "winfirewall.cc",
595 "winfirewall.h",
596 "winping.cc",
597 "winping.h",
598 ]
599
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000600 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000601 "crypt32.lib",
602 "iphlpapi.lib",
603 "secur32.lib",
604 ]
605
606 cflags += [
607 # Suppress warnings about WIN32_LEAN_AND_MEAN.
608 "/wd4005",
609 "/wd4703",
610 ]
611
612 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000613 }
614
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000615 if (is_posix && is_debug) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000616 # The Chromium build/common.gypi defines this for all posix
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000617 # _except_ for ios & mac. We want it there as well, e.g.
618 # because ASSERT and friends trigger off of it.
619 defines += [ "_DEBUG" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000620 }
621
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000622 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000623 defines += [ "CARBON_DEPRECATED=YES" ]
624 }
625
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000626 if (is_linux || is_android) {
627 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000628 "linux.cc",
629 "linux.h",
630 ]
631 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000632}