blob: 5aa3ae4eac43085285a84a3edec8f8a471a1dce2 [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",
106 "ortcfactory.cc",
107 "ortcfactory.h",
108 "peerconnection.cc",
109 "peerconnection.h",
110 "peerconnectionfactory.cc",
111 "peerconnectionfactory.h",
112 "remoteaudiosource.cc",
113 "remoteaudiosource.h",
114 "rtcstatscollector.cc",
115 "rtcstatscollector.h",
116 "rtpreceiver.cc",
117 "rtpreceiver.h",
118 "rtpsender.cc",
119 "rtpsender.h",
120 "sctputils.cc",
121 "sctputils.h",
122 "statscollector.cc",
123 "statscollector.h",
124 "streamcollection.h",
125 "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
226 config("peerconnection_unittests_config") {
227 # The warnings below are enabled by default. Since GN orders compiler flags
228 # for a target before flags from configs, the only way to disable such
229 # warnings is by having them in a separate config, loaded from the target.
230 # TODO(kjellander): Make the code compile without disabling these flags.
231 # See https://bugs.webrtc.org/3307.
232 if (is_clang && is_win) {
233 cflags = [
234 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
235 # for -Wno-sign-compare
236 "-Wno-sign-compare",
237 "-Wno-unused-function",
238 ]
239 }
240
241 if (!is_win) {
242 cflags = [ "-Wno-sign-compare" ]
243 }
244 }
245
246 rtc_test("peerconnection_unittests") {
247 check_includes = false # TODO(kjellander): Remove (bugs.webrtc.org/6828)
248 testonly = true
249 sources = [
250 "datachannel_unittest.cc",
251 "dtmfsender_unittest.cc",
252 "fakemediacontroller.h",
253 "jsepsessiondescription_unittest.cc",
254 "localaudiosource_unittest.cc",
255 "mediaconstraintsinterface_unittest.cc",
256 "mediastream_unittest.cc",
257 "ortcfactory_unittest.cc",
258 "peerconnection_unittest.cc",
259 "peerconnectionendtoend_unittest.cc",
260 "peerconnectionfactory_unittest.cc",
261 "peerconnectioninterface_unittest.cc",
262 "proxy_unittest.cc",
263 "rtcstats_integrationtest.cc",
264 "rtcstatscollector_unittest.cc",
265 "rtpsenderreceiver_unittest.cc",
266 "sctputils_unittest.cc",
267 "statscollector_unittest.cc",
268 "test/fakeaudiocapturemodule.cc",
269 "test/fakeaudiocapturemodule.h",
270 "test/fakeaudiocapturemodule_unittest.cc",
271 "test/fakedatachannelprovider.h",
272 "test/fakeperiodicvideocapturer.h",
273 "test/fakertccertificategenerator.h",
274 "test/fakevideotrackrenderer.h",
275 "test/fakevideotracksource.h",
276 "test/mock_datachannel.h",
277 "test/mock_peerconnection.h",
278 "test/mock_webrtcsession.h",
279 "test/mockpeerconnectionobservers.h",
280 "test/peerconnectiontestwrapper.cc",
281 "test/peerconnectiontestwrapper.h",
282 "test/rtcstatsobtainer.h",
283 "test/testsdpstrings.h",
284 "videocapturertracksource_unittest.cc",
285 "videotrack_unittest.cc",
286 "webrtcsdp_unittest.cc",
287 "webrtcsession_unittest.cc",
288 ]
289
290 if (rtc_enable_sctp) {
291 defines = [ "HAVE_SCTP" ]
292 }
293
294 configs += [ ":peerconnection_unittests_config" ]
295
296 if (!build_with_chromium && is_clang) {
297 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
298 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
299 }
300
301 # TODO(jschuh): Bug 1348: fix this warning.
302 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
303
304 if (is_win) {
305 cflags = [
306 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
307 "/wd4389", # signed/unsigned mismatch.
308 ]
309 }
310
311 if (rtc_use_quic) {
312 public_deps = [
313 "//third_party/libquic",
314 ]
315 sources += [
316 "quicdatachannel_unittest.cc",
317 "quicdatatransport_unittest.cc",
318 ]
319 }
320
321 deps = []
322 if (is_android) {
323 sources += [
324 "test/androidtestinitializer.cc",
325 "test/androidtestinitializer.h",
326 ]
327 deps += [
328 "//testing/android/native_test:native_test_support",
329 "//webrtc/sdk/android:libjingle_peerconnection_java",
330 "//webrtc/sdk/android:libjingle_peerconnection_jni",
331 ]
332 }
333
334 deps += [
335 ":libjingle_peerconnection",
336 "..:webrtc_common",
337 "../api:fakemetricsobserver",
338 "../base:rtc_base_tests_utils",
339 "../media:rtc_unittest_main",
340 "../pc:rtc_pc",
341 "../system_wrappers:metrics_default",
342 "//testing/gmock",
343 ]
344
345 if (is_android) {
346 deps += [ "//testing/android/native_test:native_test_support" ]
347
348 shard_timeout = 900
349 }
350 }
kjellander142f8c52016-06-13 00:08:24 -0700351}