blob: 8aba758aa007966759e282bbe99a82af1539655c [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") {
jbaucheaa9c1d2017-03-06 11:32:22 -080022 defines = []
deadbeef40610e22016-12-22 10:53:38 -080023 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",
jbauchdfcab722017-03-06 00:14:10 -080041 "externalhmac.cc",
42 "externalhmac.h",
kjellanderc76dc952016-06-03 03:09:32 -070043 "mediamonitor.cc",
44 "mediamonitor.h",
45 "mediasession.cc",
46 "mediasession.h",
kjellanderc76dc952016-06-03 03:09:32 -070047 "rtcpmuxfilter.cc",
48 "rtcpmuxfilter.h",
zsteind48dbda2017-04-04 19:45:57 -070049 "rtptransport.cc",
50 "rtptransport.h",
kjellanderc76dc952016-06-03 03:09:32 -070051 "srtpfilter.cc",
52 "srtpfilter.h",
53 "voicechannel.h",
54 ]
55
56 deps = [
kjellandera69d9732016-08-31 07:33:05 -070057 "../api:call_api",
kjellanderc76dc952016-06-03 03:09:32 -070058 "../base:rtc_base",
59 "../media",
60 ]
61
kjellanderc76dc952016-06-03 03:09:32 -070062 if (rtc_build_libsrtp) {
63 deps += [ "//third_party/libsrtp" ]
64 }
65
ehmaldonadoe9cc6862016-09-05 06:10:18 -070066 public_configs = [ ":rtc_pc_config" ]
kjellanderc76dc952016-06-03 03:09:32 -070067
kjellandere40a7ee2016-10-16 23:56:12 -070068 if (!build_with_chromium && is_clang) {
kjellander142f8c52016-06-13 00:08:24 -070069 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -070070 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderc76dc952016-06-03 03:09:32 -070071 }
72}
kjellander142f8c52016-06-13 00:08:24 -070073
ossu7bb87ee2017-01-23 04:56:25 -080074config("libjingle_peerconnection_warnings_config") {
75 # GN orders flags on a target before flags from configs. The default config
76 # adds these flags so to cancel them out they need to come from a config and
77 # cannot be on the target directly.
78 if (!is_win && !is_clang) {
79 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
80 }
81}
82
83rtc_static_library("libjingle_peerconnection") {
84 check_includes = false # TODO(kjellander): Remove (bugs.webrtc.org/6828)
85 cflags = []
86 sources = [
87 "audiotrack.cc",
88 "audiotrack.h",
89 "datachannel.cc",
90 "datachannel.h",
91 "dtmfsender.cc",
92 "dtmfsender.h",
deadbeef1dcb1642017-03-29 21:08:16 -070093 "iceserverparsing.cc",
94 "iceserverparsing.h",
ossu7bb87ee2017-01-23 04:56:25 -080095 "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",
deadbeef1dcb1642017-03-29 21:08:16 -0700285 "iceserverparsing_unittest.cc",
ossu7bb87ee2017-01-23 04:56:25 -0800286 "jsepsessiondescription_unittest.cc",
287 "localaudiosource_unittest.cc",
288 "mediaconstraintsinterface_unittest.cc",
289 "mediastream_unittest.cc",
deadbeef1dcb1642017-03-29 21:08:16 -0700290 "peerconnection_integrationtest.cc",
ossu7bb87ee2017-01-23 04:56:25 -0800291 "peerconnectionendtoend_unittest.cc",
292 "peerconnectionfactory_unittest.cc",
293 "peerconnectioninterface_unittest.cc",
294 "proxy_unittest.cc",
295 "rtcstats_integrationtest.cc",
296 "rtcstatscollector_unittest.cc",
297 "rtpsenderreceiver_unittest.cc",
298 "sctputils_unittest.cc",
299 "statscollector_unittest.cc",
ossu7bb87ee2017-01-23 04:56:25 -0800300 "test/fakeaudiocapturemodule_unittest.cc",
ossu7bb87ee2017-01-23 04:56:25 -0800301 "test/testsdpstrings.h",
deadbeef804c1af2017-02-11 19:07:31 -0800302 "trackmediainfomap_unittest.cc",
ossu7bb87ee2017-01-23 04:56:25 -0800303 "videocapturertracksource_unittest.cc",
304 "videotrack_unittest.cc",
305 "webrtcsdp_unittest.cc",
306 "webrtcsession_unittest.cc",
307 ]
308
309 if (rtc_enable_sctp) {
310 defines = [ "HAVE_SCTP" ]
311 }
312
313 configs += [ ":peerconnection_unittests_config" ]
314
315 if (!build_with_chromium && is_clang) {
316 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
317 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
318 }
319
320 # TODO(jschuh): Bug 1348: fix this warning.
321 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
322
323 if (is_win) {
324 cflags = [
325 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
326 "/wd4389", # signed/unsigned mismatch.
327 ]
328 }
329
330 if (rtc_use_quic) {
331 public_deps = [
332 "//third_party/libquic",
333 ]
334 sources += [
335 "quicdatachannel_unittest.cc",
336 "quicdatatransport_unittest.cc",
337 ]
338 }
339
340 deps = []
341 if (is_android) {
342 sources += [
343 "test/androidtestinitializer.cc",
344 "test/androidtestinitializer.h",
345 ]
346 deps += [
347 "//testing/android/native_test:native_test_support",
348 "//webrtc/sdk/android:libjingle_peerconnection_java",
349 "//webrtc/sdk/android:libjingle_peerconnection_jni",
350 ]
351 }
352
353 deps += [
354 ":libjingle_peerconnection",
deadbeefe814a0d2017-02-25 18:15:09 -0800355 ":pc_test_utils",
ossu7bb87ee2017-01-23 04:56:25 -0800356 "..:webrtc_common",
357 "../api:fakemetricsobserver",
358 "../base:rtc_base_tests_utils",
359 "../media:rtc_unittest_main",
360 "../pc:rtc_pc",
361 "../system_wrappers:metrics_default",
362 "//testing/gmock",
363 ]
364
365 if (is_android) {
366 deps += [ "//testing/android/native_test:native_test_support" ]
367
368 shard_timeout = 900
369 }
370 }
kjellander142f8c52016-06-13 00:08:24 -0700371}