blob: 0d86bc3f016a05b02f4da3b277d34bef618cb629 [file] [log] [blame]
kjellanderc76dc952016-06-03 03:09:32 -07001# Copyright (c) 2016 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
mbonadei9aa3f0a2017-01-24 06:58:22 -08009import("../webrtc.gni")
ossu7bb87ee2017-01-23 04:56:25 -080010if (is_android) {
11 import("//build/config/android/config.gni")
12 import("//build/config/android/rules.gni")
13}
kjellanderc76dc952016-06-03 03:09:32 -070014
15group("pc") {
kjellander705ecc52016-09-15 00:53:26 -070016 public_deps = [
kjellanderc76dc952016-06-03 03:09:32 -070017 ":rtc_pc",
18 ]
19}
20
21config("rtc_pc_config") {
deadbeef40610e22016-12-22 10:53:38 -080022 defines = [ "HAVE_SRTP" ]
23 if (rtc_enable_sctp) {
24 defines += [ "HAVE_SCTP" ]
25 }
kjellanderc76dc952016-06-03 03:09:32 -070026}
27
kjellanderb62dbbe2016-09-23 00:38:52 -070028rtc_static_library("rtc_pc") {
kjellanderc76dc952016-06-03 03:09:32 -070029 defines = []
30 sources = [
31 "audiomonitor.cc",
32 "audiomonitor.h",
33 "bundlefilter.cc",
34 "bundlefilter.h",
35 "channel.cc",
36 "channel.h",
37 "channelmanager.cc",
38 "channelmanager.h",
39 "currentspeakermonitor.cc",
40 "currentspeakermonitor.h",
41 "mediamonitor.cc",
42 "mediamonitor.h",
43 "mediasession.cc",
44 "mediasession.h",
kjellanderc76dc952016-06-03 03:09:32 -070045 "rtcpmuxfilter.cc",
46 "rtcpmuxfilter.h",
47 "srtpfilter.cc",
48 "srtpfilter.h",
49 "voicechannel.h",
50 ]
51
52 deps = [
kjellandera69d9732016-08-31 07:33:05 -070053 "../api:call_api",
kjellanderc76dc952016-06-03 03:09:32 -070054 "../base:rtc_base",
55 "../media",
56 ]
57
58 if (build_with_chromium) {
59 sources += [
60 "externalhmac.cc",
61 "externalhmac.h",
62 ]
63 }
64 if (rtc_build_libsrtp) {
65 deps += [ "//third_party/libsrtp" ]
66 }
67
ehmaldonadoe9cc6862016-09-05 06:10:18 -070068 public_configs = [ ":rtc_pc_config" ]
kjellanderc76dc952016-06-03 03:09:32 -070069
kjellandere40a7ee2016-10-16 23:56:12 -070070 if (!build_with_chromium && is_clang) {
kjellander142f8c52016-06-13 00:08:24 -070071 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -070072 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderc76dc952016-06-03 03:09:32 -070073 }
74}
kjellander142f8c52016-06-13 00:08:24 -070075
ossu7bb87ee2017-01-23 04:56:25 -080076config("libjingle_peerconnection_warnings_config") {
77 # GN orders flags on a target before flags from configs. The default config
78 # adds these flags so to cancel them out they need to come from a config and
79 # cannot be on the target directly.
80 if (!is_win && !is_clang) {
81 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
82 }
83}
84
85rtc_static_library("libjingle_peerconnection") {
86 check_includes = false # TODO(kjellander): Remove (bugs.webrtc.org/6828)
87 cflags = []
88 sources = [
89 "audiotrack.cc",
90 "audiotrack.h",
91 "datachannel.cc",
92 "datachannel.h",
93 "dtmfsender.cc",
94 "dtmfsender.h",
95 "jsepicecandidate.cc",
96 "jsepsessiondescription.cc",
97 "localaudiosource.cc",
98 "localaudiosource.h",
99 "mediacontroller.cc",
100 "mediacontroller.h",
101 "mediastream.cc",
102 "mediastream.h",
103 "mediastreamobserver.cc",
104 "mediastreamobserver.h",
105 "mediastreamtrack.h",
ossu7bb87ee2017-01-23 04:56:25 -0800106 "peerconnection.cc",
107 "peerconnection.h",
108 "peerconnectionfactory.cc",
109 "peerconnectionfactory.h",
110 "remoteaudiosource.cc",
111 "remoteaudiosource.h",
112 "rtcstatscollector.cc",
113 "rtcstatscollector.h",
114 "rtpreceiver.cc",
115 "rtpreceiver.h",
116 "rtpsender.cc",
117 "rtpsender.h",
118 "sctputils.cc",
119 "sctputils.h",
120 "statscollector.cc",
121 "statscollector.h",
122 "streamcollection.h",
deadbeef804c1af2017-02-11 19:07:31 -0800123 "trackmediainfomap.cc",
124 "trackmediainfomap.h",
ossu7bb87ee2017-01-23 04:56:25 -0800125 "videocapturertracksource.cc",
126 "videocapturertracksource.h",
127 "videotrack.cc",
128 "videotrack.h",
129 "videotracksource.cc",
130 "videotracksource.h",
131 "webrtcsdp.cc",
132 "webrtcsdp.h",
133 "webrtcsession.cc",
134 "webrtcsession.h",
135 "webrtcsessiondescriptionfactory.cc",
136 "webrtcsessiondescriptionfactory.h",
137 ]
138
139 configs += [ ":libjingle_peerconnection_warnings_config" ]
140
141 if (!build_with_chromium && is_clang) {
142 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
143 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
144 }
145
146 deps = [
147 ":rtc_pc",
148 "../api:call_api",
ossu7bb87ee2017-01-23 04:56:25 -0800149 "../api:rtc_stats_api",
150 "../call",
151 "../media",
152 "../stats",
153 ]
154
ossuda250062017-01-23 07:37:43 -0800155 public_deps = [
156 "../api:libjingle_peerconnection_api",
157 ]
158
ossu7bb87ee2017-01-23 04:56:25 -0800159 if (rtc_use_quic) {
160 sources += [
161 "quicdatachannel.cc",
162 "quicdatachannel.h",
163 "quicdatatransport.cc",
164 "quicdatatransport.h",
165 ]
166 deps += [ "//third_party/libquic" ]
167 public_deps = [
168 "//third_party/libquic",
169 ]
170 }
171}
172
kjellander142f8c52016-06-13 00:08:24 -0700173if (rtc_include_tests) {
174 config("rtc_pc_unittests_config") {
175 # GN orders flags on a target before flags from configs. The default config
176 # adds -Wall, and this flag have to be after -Wall -- so they need to
177 # come from a config and can't be on the target directly.
178 if (!is_win && !is_clang) {
179 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
180 }
181 }
182
ehmaldonado38a21322016-09-02 04:10:34 -0700183 rtc_test("rtc_pc_unittests") {
kjellander142f8c52016-06-13 00:08:24 -0700184 testonly = true
185
186 sources = [
187 "bundlefilter_unittest.cc",
188 "channel_unittest.cc",
189 "channelmanager_unittest.cc",
190 "currentspeakermonitor_unittest.cc",
191 "mediasession_unittest.cc",
192 "rtcpmuxfilter_unittest.cc",
193 "srtpfilter_unittest.cc",
194 ]
195
196 include_dirs = [ "//third_party/libsrtp/srtp" ]
197
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700198 configs += [ ":rtc_pc_unittests_config" ]
kjellander142f8c52016-06-13 00:08:24 -0700199
kjellandere40a7ee2016-10-16 23:56:12 -0700200 if (!build_with_chromium && is_clang) {
kjellander142f8c52016-06-13 00:08:24 -0700201 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700202 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellander142f8c52016-06-13 00:08:24 -0700203 }
204
205 if (is_win) {
206 libs = [ "strmiids.lib" ]
207 }
208
209 deps = [
ossu7bb87ee2017-01-23 04:56:25 -0800210 ":libjingle_peerconnection",
kjellander142f8c52016-06-13 00:08:24 -0700211 ":rtc_pc",
kjellander142f8c52016-06-13 00:08:24 -0700212 "../base:rtc_base_tests_utils",
213 "../media:rtc_unittest_main",
214 "../system_wrappers:metrics_default",
215 ]
216
217 if (rtc_build_libsrtp) {
218 deps += [ "//third_party/libsrtp" ]
219 }
220
221 if (is_android) {
222 deps += [ "//testing/android/native_test:native_test_support" ]
223 }
224 }
ossu7bb87ee2017-01-23 04:56:25 -0800225
deadbeefe814a0d2017-02-25 18:15:09 -0800226 rtc_source_set("pc_test_utils") {
227 testonly = true
228 sources = [
229 "test/fakeaudiocapturemodule.cc",
230 "test/fakeaudiocapturemodule.h",
231 "test/fakedatachannelprovider.h",
232 "test/fakeperiodicvideocapturer.h",
233 "test/fakertccertificategenerator.h",
234 "test/fakevideotrackrenderer.h",
235 "test/fakevideotracksource.h",
236 "test/mock_datachannel.h",
237 "test/mock_peerconnection.h",
238 "test/mock_webrtcsession.h",
239 "test/mockpeerconnectionobservers.h",
240 "test/peerconnectiontestwrapper.cc",
241 "test/peerconnectiontestwrapper.h",
242 "test/rtcstatsobtainer.h",
243 "test/testsdpstrings.h",
244 ]
245
246 deps = [
247 ":libjingle_peerconnection",
248 "../base:rtc_base_tests_utils",
249 "//testing/gmock",
250 ]
251
252 if (!build_with_chromium && is_clang) {
253 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
254 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
255 }
256 }
257
ossu7bb87ee2017-01-23 04:56:25 -0800258 config("peerconnection_unittests_config") {
259 # The warnings below are enabled by default. Since GN orders compiler flags
260 # for a target before flags from configs, the only way to disable such
261 # warnings is by having them in a separate config, loaded from the target.
262 # TODO(kjellander): Make the code compile without disabling these flags.
263 # See https://bugs.webrtc.org/3307.
264 if (is_clang && is_win) {
265 cflags = [
266 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
267 # for -Wno-sign-compare
268 "-Wno-sign-compare",
269 "-Wno-unused-function",
270 ]
271 }
272
273 if (!is_win) {
274 cflags = [ "-Wno-sign-compare" ]
275 }
276 }
277
278 rtc_test("peerconnection_unittests") {
279 check_includes = false # TODO(kjellander): Remove (bugs.webrtc.org/6828)
280 testonly = true
281 sources = [
282 "datachannel_unittest.cc",
283 "dtmfsender_unittest.cc",
284 "fakemediacontroller.h",
285 "jsepsessiondescription_unittest.cc",
286 "localaudiosource_unittest.cc",
287 "mediaconstraintsinterface_unittest.cc",
288 "mediastream_unittest.cc",
ossu7bb87ee2017-01-23 04:56:25 -0800289 "peerconnection_unittest.cc",
290 "peerconnectionendtoend_unittest.cc",
291 "peerconnectionfactory_unittest.cc",
292 "peerconnectioninterface_unittest.cc",
293 "proxy_unittest.cc",
294 "rtcstats_integrationtest.cc",
295 "rtcstatscollector_unittest.cc",
296 "rtpsenderreceiver_unittest.cc",
297 "sctputils_unittest.cc",
298 "statscollector_unittest.cc",
ossu7bb87ee2017-01-23 04:56:25 -0800299 "test/fakeaudiocapturemodule_unittest.cc",
ossu7bb87ee2017-01-23 04:56:25 -0800300 "test/testsdpstrings.h",
deadbeef804c1af2017-02-11 19:07:31 -0800301 "trackmediainfomap_unittest.cc",
ossu7bb87ee2017-01-23 04:56:25 -0800302 "videocapturertracksource_unittest.cc",
303 "videotrack_unittest.cc",
304 "webrtcsdp_unittest.cc",
305 "webrtcsession_unittest.cc",
306 ]
307
308 if (rtc_enable_sctp) {
309 defines = [ "HAVE_SCTP" ]
310 }
311
312 configs += [ ":peerconnection_unittests_config" ]
313
314 if (!build_with_chromium && is_clang) {
315 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
316 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
317 }
318
319 # TODO(jschuh): Bug 1348: fix this warning.
320 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
321
322 if (is_win) {
323 cflags = [
324 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
325 "/wd4389", # signed/unsigned mismatch.
326 ]
327 }
328
329 if (rtc_use_quic) {
330 public_deps = [
331 "//third_party/libquic",
332 ]
333 sources += [
334 "quicdatachannel_unittest.cc",
335 "quicdatatransport_unittest.cc",
336 ]
337 }
338
339 deps = []
340 if (is_android) {
341 sources += [
342 "test/androidtestinitializer.cc",
343 "test/androidtestinitializer.h",
344 ]
345 deps += [
346 "//testing/android/native_test:native_test_support",
347 "//webrtc/sdk/android:libjingle_peerconnection_java",
348 "//webrtc/sdk/android:libjingle_peerconnection_jni",
349 ]
350 }
351
352 deps += [
353 ":libjingle_peerconnection",
deadbeefe814a0d2017-02-25 18:15:09 -0800354 ":pc_test_utils",
ossu7bb87ee2017-01-23 04:56:25 -0800355 "..:webrtc_common",
356 "../api:fakemetricsobserver",
357 "../base:rtc_base_tests_utils",
358 "../media:rtc_unittest_main",
359 "../pc:rtc_pc",
360 "../system_wrappers:metrics_default",
361 "//testing/gmock",
362 ]
363
364 if (is_android) {
365 deps += [ "//testing/android/native_test:native_test_support" ]
366
367 shard_timeout = 900
368 }
369 }
kjellander142f8c52016-06-13 00:08:24 -0700370}