blob: d06439f433e26ca377f0d7bb46e47c28372146af [file] [log] [blame]
hjonaa32c3e2015-12-13 19:58:11 -08001# Copyright (c) 2015 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/webrtc.gni")
kjellanderfd5b4e92016-06-13 12:08:33 -070010import("//testing/test.gni")
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +020011if (is_android) {
12 import("//build/config/android/config.gni")
13 import("//build/config/android/rules.gni")
14}
kjellanderc76dc952016-06-03 03:09:32 -070015
16group("api") {
17 deps = [
18 ":libjingle_peerconnection",
19 ]
20}
21
22config("libjingle_peerconnection_warnings_config") {
23 # GN orders flags on a target before flags from configs. The default config
24 # adds these flags so to cancel them out they need to come from a config and
25 # cannot be on the target directly.
kjellander3e33bfe2016-06-20 07:04:09 -070026 if (!is_win && !is_clang) {
27 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
kjellanderc76dc952016-06-03 03:09:32 -070028 }
29}
30
31source_set("libjingle_peerconnection") {
32 cflags = []
33 sources = [
34 "audiotrack.cc",
35 "audiotrack.h",
36 "datachannel.cc",
37 "datachannel.h",
38 "datachannelinterface.h",
kjellanderc76dc952016-06-03 03:09:32 -070039 "dtmfsender.cc",
40 "dtmfsender.h",
41 "dtmfsenderinterface.h",
42 "jsep.h",
43 "jsepicecandidate.cc",
44 "jsepicecandidate.h",
45 "jsepsessiondescription.cc",
46 "jsepsessiondescription.h",
47 "localaudiosource.cc",
48 "localaudiosource.h",
49 "mediaconstraintsinterface.cc",
50 "mediaconstraintsinterface.h",
51 "mediacontroller.cc",
52 "mediacontroller.h",
53 "mediastream.cc",
54 "mediastream.h",
55 "mediastreaminterface.h",
56 "mediastreamobserver.cc",
57 "mediastreamobserver.h",
kjellanderc76dc952016-06-03 03:09:32 -070058 "mediastreamproxy.h",
59 "mediastreamtrack.h",
60 "mediastreamtrackproxy.h",
61 "notifier.h",
62 "peerconnection.cc",
63 "peerconnection.h",
64 "peerconnectionfactory.cc",
65 "peerconnectionfactory.h",
66 "peerconnectionfactoryproxy.h",
67 "peerconnectioninterface.h",
68 "peerconnectionproxy.h",
69 "proxy.h",
70 "remoteaudiosource.cc",
71 "remoteaudiosource.h",
72 "rtpparameters.h",
73 "rtpreceiver.cc",
74 "rtpreceiver.h",
75 "rtpreceiverinterface.h",
76 "rtpsender.cc",
77 "rtpsender.h",
78 "rtpsenderinterface.h",
79 "sctputils.cc",
80 "sctputils.h",
81 "statscollector.cc",
82 "statscollector.h",
83 "statstypes.cc",
84 "statstypes.h",
85 "streamcollection.h",
86 "videocapturertracksource.cc",
87 "videocapturertracksource.h",
88 "videosourceproxy.h",
89 "videotrack.cc",
90 "videotrack.h",
91 "videotracksource.cc",
92 "videotracksource.h",
93 "webrtcsdp.cc",
94 "webrtcsdp.h",
95 "webrtcsession.cc",
96 "webrtcsession.h",
97 "webrtcsessiondescriptionfactory.cc",
98 "webrtcsessiondescriptionfactory.h",
99 ]
100
101 configs += [
102 "..:common_config",
103 ":libjingle_peerconnection_warnings_config",
104 ]
105 public_configs = [ "..:common_inherited_config" ]
106
107 if (is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700108 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellanderc76dc952016-06-03 03:09:32 -0700109 configs -= [ "//build/config/clang:find_bad_constructs" ]
110 }
111
kjellanderc76dc952016-06-03 03:09:32 -0700112 deps = [
katrielc14897d02016-06-03 13:14:28 -0700113 "../call",
kjellanderc76dc952016-06-03 03:09:32 -0700114 "../media",
115 "../pc",
116 ]
117
118 if (rtc_use_quic) {
119 sources += [
120 "quicdatachannel.cc",
121 "quicdatachannel.h",
122 "quicdatatransport.cc",
123 "quicdatatransport.h",
124 ]
125 deps += [ "//third_party/libquic" ]
126 public_deps = [
127 "//third_party/libquic",
128 ]
129 }
130}
kjellanderfd5b4e92016-06-13 12:08:33 -0700131
kjellander69b34622016-06-21 01:05:16 -0700132# Exclude the targets below from the Chromium build since they cannot be built
133# due to incompability with Chromium's logging implementation.
134if (is_android && !build_with_chromium) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700135 config("libjingle_peerconnection_jni_warnings_config") {
136 # The warnings below are enabled by default. Since GN orders compiler flags
137 # for a target before flags from configs, the only way to disable such
138 # warnings is by having them in a separate config, loaded from the target.
139 if (!is_win) {
140 cflags = [
141 "-Wno-sign-compare",
142 "-Wno-unused-variable",
143 ]
144 }
145 }
146
147 source_set("libjingle_peerconnection_jni") {
148 sources = [
sakald34a7112016-07-01 05:10:51 -0700149 "android/jni/androidmediacodeccommon.h",
150 "android/jni/androidmediadecoder_jni.cc",
151 "android/jni/androidmediadecoder_jni.h",
152 "android/jni/androidmediaencoder_jni.cc",
153 "android/jni/androidmediaencoder_jni.h",
154 "android/jni/androidmetrics_jni.cc",
155 "android/jni/androidnetworkmonitor_jni.cc",
156 "android/jni/androidnetworkmonitor_jni.h",
157 "android/jni/androidvideocapturer_jni.cc",
158 "android/jni/androidvideocapturer_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200159 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700160 "android/jni/classreferenceholder.cc",
161 "android/jni/classreferenceholder.h",
162 "android/jni/jni_helpers.cc",
163 "android/jni/jni_helpers.h",
164 "android/jni/native_handle_impl.cc",
165 "android/jni/native_handle_impl.h",
166 "android/jni/peerconnection_jni.cc",
167 "android/jni/surfacetexturehelper_jni.cc",
168 "android/jni/surfacetexturehelper_jni.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700169 "androidvideocapturer.cc",
170 "androidvideocapturer.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200171 "androidvideotracksource.cc",
172 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700173 ]
174
175 configs += [
176 "..:common_config",
177 ":libjingle_peerconnection_jni_warnings_config",
178 ]
179 public_configs = [ "..:common_inherited_config" ]
180
181 if (is_clang) {
182 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
183 configs -= [
184 "//build/config/clang:extra_warnings",
185 "//build/config/clang:find_bad_constructs",
186 ]
187 }
188
189 # TODO(jschuh): Bug 1348: fix this warning.
190 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
191
192 if (is_win) {
193 cflags += [
194 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
195 "/wd4389", # signed/unsigned mismatch.
196 ]
197 }
198
199 deps = [
200 ":libjingle_peerconnection",
sakal86ccd7b2016-08-22 00:26:01 -0700201 "../system_wrappers:field_trial_default",
kjellanderfd5b4e92016-06-13 12:08:33 -0700202 "../system_wrappers:metrics_default",
203 ]
204
205 if (rtc_build_libyuv) {
206 deps += [ "$rtc_libyuv_dir" ]
207 public_deps = [
208 "$rtc_libyuv_dir",
209 ]
210 } else {
211 # Need to add a directory normally exported by libyuv.
212 include_dirs += [ "$rtc_libyuv_dir/include" ]
213 }
214 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200215
216 shared_library("libjingle_peerconnection_so") {
217 sources = [
sakald34a7112016-07-01 05:10:51 -0700218 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200219 ]
220
221 configs -= [ "//build/config/android:hide_native_jni_exports" ]
222
223 deps = [
224 ":libjingle_peerconnection",
225 ":libjingle_peerconnection_jni",
226 ]
sakala53fa0a2016-08-24 00:48:21 -0700227 output_extension = "so"
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200228 }
229
230 android_library("libjingle_peerconnection_java") {
231 java_files = [
232 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
233 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
234 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
235 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
236 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
237 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700238 "android/java/src/org/webrtc/AudioSource.java",
239 "android/java/src/org/webrtc/AudioTrack.java",
240 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
241 "android/java/src/org/webrtc/Camera1Enumerator.java",
242 "android/java/src/org/webrtc/Camera2Capturer.java",
243 "android/java/src/org/webrtc/Camera2Enumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700244 "android/java/src/org/webrtc/Camera2Session.java",
245 "android/java/src/org/webrtc/CameraCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700246 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
247 "android/java/src/org/webrtc/CameraEnumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700248 "android/java/src/org/webrtc/CameraSession.java",
sakald34a7112016-07-01 05:10:51 -0700249 "android/java/src/org/webrtc/CameraVideoCapturer.java",
250 "android/java/src/org/webrtc/DataChannel.java",
251 "android/java/src/org/webrtc/EglBase.java",
252 "android/java/src/org/webrtc/EglBase10.java",
253 "android/java/src/org/webrtc/EglBase14.java",
254 "android/java/src/org/webrtc/GlRectDrawer.java",
255 "android/java/src/org/webrtc/GlShader.java",
256 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
257 "android/java/src/org/webrtc/GlUtil.java",
258 "android/java/src/org/webrtc/IceCandidate.java",
259 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
260 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
261 "android/java/src/org/webrtc/MediaConstraints.java",
262 "android/java/src/org/webrtc/MediaSource.java",
263 "android/java/src/org/webrtc/MediaStream.java",
264 "android/java/src/org/webrtc/MediaStreamTrack.java",
265 "android/java/src/org/webrtc/Metrics.java",
266 "android/java/src/org/webrtc/NetworkMonitor.java",
267 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
268 "android/java/src/org/webrtc/PeerConnection.java",
269 "android/java/src/org/webrtc/PeerConnectionFactory.java",
270 "android/java/src/org/webrtc/RendererCommon.java",
271 "android/java/src/org/webrtc/RtpParameters.java",
272 "android/java/src/org/webrtc/RtpReceiver.java",
273 "android/java/src/org/webrtc/RtpSender.java",
274 "android/java/src/org/webrtc/SdpObserver.java",
275 "android/java/src/org/webrtc/SessionDescription.java",
276 "android/java/src/org/webrtc/StatsObserver.java",
277 "android/java/src/org/webrtc/StatsReport.java",
278 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
279 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
280 "android/java/src/org/webrtc/VideoCapturer.java",
281 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
282 "android/java/src/org/webrtc/VideoRenderer.java",
283 "android/java/src/org/webrtc/VideoRendererGui.java",
284 "android/java/src/org/webrtc/VideoSource.java",
285 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200286 ]
287
288 deps = [
289 "//webrtc/base:base_java",
290 ]
291 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700292}
293
294if (rtc_include_tests) {
295 config("peerconnection_unittests_config") {
296 # The warnings below are enabled by default. Since GN orders compiler flags
297 # for a target before flags from configs, the only way to disable such
298 # warnings is by having them in a separate config, loaded from the target.
299 # TODO(kjellander): Make the code compile without disabling these flags.
300 # See https://bugs.webrtc.org/3307.
301 if (is_clang && is_win) {
302 cflags = [ "-Wno-unused-function" ]
303 }
304
305 if (!is_win) {
306 cflags = [ "-Wno-sign-compare" ]
307 cflags_cc = [ "-Wno-overloaded-virtual" ]
308 }
309 }
310
311 test("peerconnection_unittests") {
312 testonly = true
313 sources = [
314 "datachannel_unittest.cc",
315 "dtmfsender_unittest.cc",
316 "fakemetricsobserver.cc",
317 "fakemetricsobserver.h",
318 "jsepsessiondescription_unittest.cc",
319 "localaudiosource_unittest.cc",
320 "mediaconstraintsinterface_unittest.cc",
321 "mediastream_unittest.cc",
322 "peerconnection_unittest.cc",
323 "peerconnectionendtoend_unittest.cc",
324 "peerconnectionfactory_unittest.cc",
325 "peerconnectioninterface_unittest.cc",
326 "proxy_unittest.cc",
327 "rtpsenderreceiver_unittest.cc",
328 "statscollector_unittest.cc",
329 "test/fakeaudiocapturemodule.cc",
330 "test/fakeaudiocapturemodule.h",
331 "test/fakeaudiocapturemodule_unittest.cc",
332 "test/fakeconstraints.h",
333 "test/fakedatachannelprovider.h",
334 "test/fakeperiodicvideocapturer.h",
335 "test/fakertccertificategenerator.h",
336 "test/fakevideotrackrenderer.h",
hbosb24b1ce2016-08-16 01:19:43 -0700337 "test/mock_peerconnection.h",
338 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700339 "test/mockpeerconnectionobservers.h",
340 "test/peerconnectiontestwrapper.cc",
341 "test/peerconnectiontestwrapper.h",
342 "test/testsdpstrings.h",
343 "videocapturertracksource_unittest.cc",
344 "videotrack_unittest.cc",
345 "webrtcsdp_unittest.cc",
346 "webrtcsession_unittest.cc",
347 ]
348
349 defines = [ "HAVE_SCTP" ]
350
351 configs += [
352 "..:common_config",
353 ":peerconnection_unittests_config",
354 ]
355 public_configs = [ "..:common_inherited_config" ]
356
357 if (is_clang) {
358 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
359 configs -= [ "//build/config/clang:find_bad_constructs" ]
360 }
361
362 # TODO(jschuh): Bug 1348: fix this warning.
363 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
364
365 if (is_win) {
366 cflags = [
367 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
368 "/wd4389", # signed/unsigned mismatch.
369 ]
370 }
371
372 if (rtc_use_quic) {
373 public_deps = [
374 "//third_party/libquic",
375 ]
376 sources += [
377 "quicdatachannel_unittest.cc",
378 "quicdatatransport_unittest.cc",
379 ]
380 }
381
382 deps = []
383 if (is_android) {
384 sources += [
385 "test/androidtestinitializer.cc",
386 "test/androidtestinitializer.h",
387 ]
388 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700389 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700390 ":libjingle_peerconnection_jni",
391 "//testing/android/native_test:native_test_support",
392 ]
393 }
394
395 deps += [
396 ":libjingle_peerconnection",
397 "..:webrtc_common",
398 "../base:rtc_base_tests_utils",
399 "../media:rtc_unittest_main",
400 "../pc:rtc_pc",
401 "../system_wrappers:metrics_default",
402 "//testing/gmock",
403 ]
404
405 if (is_android) {
406 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700407
408 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700409 }
410 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700411
412 if (is_android) {
413 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
414 apk_name = "libjingle_peerconnection_android_unittest"
415 android_manifest = "androidtests/AndroidManifest.xml"
416
417 java_files = [
418 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
419 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
420 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
421 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
422 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
423 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
424 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
425 "androidtests/src/org/webrtc/PeerConnectionTest.java",
426 "androidtests/src/org/webrtc/RendererCommonTest.java",
427 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
428 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
429 ]
430
431 deps = [
432 ":libjingle_peerconnection_android_unittest_resources",
433 ":libjingle_peerconnection_java",
434 "//base:base_java",
435 "//webrtc/base:base_java",
436 ]
437
438 shared_libraries = [ ":libjingle_peerconnection_so" ]
439 }
440
441 android_resources("libjingle_peerconnection_android_unittest_resources") {
442 resource_dirs = [ "androidtests/res" ]
443 custom_package = "org.webrtc"
444 }
445 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700446}