blob: 68c6c8eb7aed1c1f619add16d022cbc331f7d91c [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",
hbos615d3012016-08-24 01:33:13 -070072 "rtcstats.h",
hbosd565b732016-08-30 14:04:35 -070073 "rtcstats_objects.h",
hbos615d3012016-08-24 01:33:13 -070074 "rtcstatsreport.h",
kjellanderc76dc952016-06-03 03:09:32 -070075 "rtpparameters.h",
76 "rtpreceiver.cc",
77 "rtpreceiver.h",
78 "rtpreceiverinterface.h",
79 "rtpsender.cc",
80 "rtpsender.h",
81 "rtpsenderinterface.h",
82 "sctputils.cc",
83 "sctputils.h",
84 "statscollector.cc",
85 "statscollector.h",
86 "statstypes.cc",
87 "statstypes.h",
88 "streamcollection.h",
89 "videocapturertracksource.cc",
90 "videocapturertracksource.h",
91 "videosourceproxy.h",
92 "videotrack.cc",
93 "videotrack.h",
94 "videotracksource.cc",
95 "videotracksource.h",
96 "webrtcsdp.cc",
97 "webrtcsdp.h",
98 "webrtcsession.cc",
99 "webrtcsession.h",
100 "webrtcsessiondescriptionfactory.cc",
101 "webrtcsessiondescriptionfactory.h",
102 ]
103
104 configs += [
105 "..:common_config",
106 ":libjingle_peerconnection_warnings_config",
107 ]
108 public_configs = [ "..:common_inherited_config" ]
109
110 if (is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700111 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellanderc76dc952016-06-03 03:09:32 -0700112 configs -= [ "//build/config/clang:find_bad_constructs" ]
113 }
114
kjellanderc76dc952016-06-03 03:09:32 -0700115 deps = [
katrielc14897d02016-06-03 13:14:28 -0700116 "../call",
kjellanderc76dc952016-06-03 03:09:32 -0700117 "../media",
118 "../pc",
119 ]
120
121 if (rtc_use_quic) {
122 sources += [
123 "quicdatachannel.cc",
124 "quicdatachannel.h",
125 "quicdatatransport.cc",
126 "quicdatatransport.h",
127 ]
128 deps += [ "//third_party/libquic" ]
129 public_deps = [
130 "//third_party/libquic",
131 ]
132 }
133}
kjellanderfd5b4e92016-06-13 12:08:33 -0700134
kjellander69b34622016-06-21 01:05:16 -0700135# Exclude the targets below from the Chromium build since they cannot be built
136# due to incompability with Chromium's logging implementation.
137if (is_android && !build_with_chromium) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700138 config("libjingle_peerconnection_jni_warnings_config") {
139 # The warnings below are enabled by default. Since GN orders compiler flags
140 # for a target before flags from configs, the only way to disable such
141 # warnings is by having them in a separate config, loaded from the target.
142 if (!is_win) {
143 cflags = [
144 "-Wno-sign-compare",
145 "-Wno-unused-variable",
146 ]
147 }
148 }
149
150 source_set("libjingle_peerconnection_jni") {
151 sources = [
sakald34a7112016-07-01 05:10:51 -0700152 "android/jni/androidmediacodeccommon.h",
153 "android/jni/androidmediadecoder_jni.cc",
154 "android/jni/androidmediadecoder_jni.h",
155 "android/jni/androidmediaencoder_jni.cc",
156 "android/jni/androidmediaencoder_jni.h",
157 "android/jni/androidmetrics_jni.cc",
158 "android/jni/androidnetworkmonitor_jni.cc",
159 "android/jni/androidnetworkmonitor_jni.h",
sakale39f2512016-08-29 07:31:25 -0700160 "android/jni/androidvideocapturer_jni.cc",
161 "android/jni/androidvideocapturer_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200162 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700163 "android/jni/classreferenceholder.cc",
164 "android/jni/classreferenceholder.h",
165 "android/jni/jni_helpers.cc",
166 "android/jni/jni_helpers.h",
167 "android/jni/native_handle_impl.cc",
168 "android/jni/native_handle_impl.h",
169 "android/jni/peerconnection_jni.cc",
170 "android/jni/surfacetexturehelper_jni.cc",
171 "android/jni/surfacetexturehelper_jni.h",
sakale39f2512016-08-29 07:31:25 -0700172 "androidvideocapturer.cc",
173 "androidvideocapturer.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200174 "androidvideotracksource.cc",
175 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700176 ]
177
178 configs += [
179 "..:common_config",
180 ":libjingle_peerconnection_jni_warnings_config",
181 ]
182 public_configs = [ "..:common_inherited_config" ]
183
184 if (is_clang) {
185 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
186 configs -= [
187 "//build/config/clang:extra_warnings",
188 "//build/config/clang:find_bad_constructs",
189 ]
190 }
191
192 # TODO(jschuh): Bug 1348: fix this warning.
193 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
194
195 if (is_win) {
196 cflags += [
197 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
198 "/wd4389", # signed/unsigned mismatch.
199 ]
200 }
201
202 deps = [
203 ":libjingle_peerconnection",
sakal86ccd7b2016-08-22 00:26:01 -0700204 "../system_wrappers:field_trial_default",
kjellanderfd5b4e92016-06-13 12:08:33 -0700205 "../system_wrappers:metrics_default",
206 ]
207
208 if (rtc_build_libyuv) {
209 deps += [ "$rtc_libyuv_dir" ]
210 public_deps = [
211 "$rtc_libyuv_dir",
212 ]
213 } else {
214 # Need to add a directory normally exported by libyuv.
215 include_dirs += [ "$rtc_libyuv_dir/include" ]
216 }
217 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200218
219 shared_library("libjingle_peerconnection_so") {
220 sources = [
sakald34a7112016-07-01 05:10:51 -0700221 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200222 ]
223
224 configs -= [ "//build/config/android:hide_native_jni_exports" ]
225
226 deps = [
227 ":libjingle_peerconnection",
228 ":libjingle_peerconnection_jni",
229 ]
sakala53fa0a2016-08-24 00:48:21 -0700230 output_extension = "so"
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200231 }
232
233 android_library("libjingle_peerconnection_java") {
234 java_files = [
235 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
236 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
237 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
238 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
239 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
240 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700241 "android/java/src/org/webrtc/AudioSource.java",
242 "android/java/src/org/webrtc/AudioTrack.java",
243 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
244 "android/java/src/org/webrtc/Camera1Enumerator.java",
245 "android/java/src/org/webrtc/Camera2Capturer.java",
246 "android/java/src/org/webrtc/Camera2Enumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700247 "android/java/src/org/webrtc/Camera2Session.java",
248 "android/java/src/org/webrtc/CameraCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700249 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
250 "android/java/src/org/webrtc/CameraEnumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700251 "android/java/src/org/webrtc/CameraSession.java",
sakald34a7112016-07-01 05:10:51 -0700252 "android/java/src/org/webrtc/CameraVideoCapturer.java",
253 "android/java/src/org/webrtc/DataChannel.java",
254 "android/java/src/org/webrtc/EglBase.java",
255 "android/java/src/org/webrtc/EglBase10.java",
256 "android/java/src/org/webrtc/EglBase14.java",
257 "android/java/src/org/webrtc/GlRectDrawer.java",
258 "android/java/src/org/webrtc/GlShader.java",
259 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
260 "android/java/src/org/webrtc/GlUtil.java",
261 "android/java/src/org/webrtc/IceCandidate.java",
262 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
263 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
264 "android/java/src/org/webrtc/MediaConstraints.java",
265 "android/java/src/org/webrtc/MediaSource.java",
266 "android/java/src/org/webrtc/MediaStream.java",
267 "android/java/src/org/webrtc/MediaStreamTrack.java",
268 "android/java/src/org/webrtc/Metrics.java",
269 "android/java/src/org/webrtc/NetworkMonitor.java",
270 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
271 "android/java/src/org/webrtc/PeerConnection.java",
272 "android/java/src/org/webrtc/PeerConnectionFactory.java",
273 "android/java/src/org/webrtc/RendererCommon.java",
274 "android/java/src/org/webrtc/RtpParameters.java",
275 "android/java/src/org/webrtc/RtpReceiver.java",
276 "android/java/src/org/webrtc/RtpSender.java",
277 "android/java/src/org/webrtc/SdpObserver.java",
278 "android/java/src/org/webrtc/SessionDescription.java",
279 "android/java/src/org/webrtc/StatsObserver.java",
280 "android/java/src/org/webrtc/StatsReport.java",
281 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
282 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
283 "android/java/src/org/webrtc/VideoCapturer.java",
284 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
285 "android/java/src/org/webrtc/VideoRenderer.java",
286 "android/java/src/org/webrtc/VideoRendererGui.java",
287 "android/java/src/org/webrtc/VideoSource.java",
288 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200289 ]
290
291 deps = [
292 "//webrtc/base:base_java",
293 ]
294 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700295}
296
297if (rtc_include_tests) {
298 config("peerconnection_unittests_config") {
299 # The warnings below are enabled by default. Since GN orders compiler flags
300 # for a target before flags from configs, the only way to disable such
301 # warnings is by having them in a separate config, loaded from the target.
302 # TODO(kjellander): Make the code compile without disabling these flags.
303 # See https://bugs.webrtc.org/3307.
304 if (is_clang && is_win) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700305 cflags = [
306 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
307 # for -Wno-sign-compare
308 "-Wno-sign-compare",
309 "-Wno-unused-function",
310 ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700311 }
312
313 if (!is_win) {
314 cflags = [ "-Wno-sign-compare" ]
315 cflags_cc = [ "-Wno-overloaded-virtual" ]
316 }
317 }
318
319 test("peerconnection_unittests") {
320 testonly = true
321 sources = [
322 "datachannel_unittest.cc",
323 "dtmfsender_unittest.cc",
324 "fakemetricsobserver.cc",
325 "fakemetricsobserver.h",
326 "jsepsessiondescription_unittest.cc",
327 "localaudiosource_unittest.cc",
328 "mediaconstraintsinterface_unittest.cc",
329 "mediastream_unittest.cc",
330 "peerconnection_unittest.cc",
331 "peerconnectionendtoend_unittest.cc",
332 "peerconnectionfactory_unittest.cc",
333 "peerconnectioninterface_unittest.cc",
334 "proxy_unittest.cc",
335 "rtpsenderreceiver_unittest.cc",
336 "statscollector_unittest.cc",
337 "test/fakeaudiocapturemodule.cc",
338 "test/fakeaudiocapturemodule.h",
339 "test/fakeaudiocapturemodule_unittest.cc",
340 "test/fakeconstraints.h",
341 "test/fakedatachannelprovider.h",
342 "test/fakeperiodicvideocapturer.h",
343 "test/fakertccertificategenerator.h",
344 "test/fakevideotrackrenderer.h",
hbosd565b732016-08-30 14:04:35 -0700345 "test/mock_datachannel.h",
hbosb24b1ce2016-08-16 01:19:43 -0700346 "test/mock_peerconnection.h",
347 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700348 "test/mockpeerconnectionobservers.h",
349 "test/peerconnectiontestwrapper.cc",
350 "test/peerconnectiontestwrapper.h",
351 "test/testsdpstrings.h",
352 "videocapturertracksource_unittest.cc",
353 "videotrack_unittest.cc",
354 "webrtcsdp_unittest.cc",
355 "webrtcsession_unittest.cc",
356 ]
357
358 defines = [ "HAVE_SCTP" ]
359
360 configs += [
361 "..:common_config",
362 ":peerconnection_unittests_config",
363 ]
364 public_configs = [ "..:common_inherited_config" ]
365
366 if (is_clang) {
367 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
368 configs -= [ "//build/config/clang:find_bad_constructs" ]
369 }
370
371 # TODO(jschuh): Bug 1348: fix this warning.
372 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
373
374 if (is_win) {
375 cflags = [
376 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
377 "/wd4389", # signed/unsigned mismatch.
378 ]
379 }
380
381 if (rtc_use_quic) {
382 public_deps = [
383 "//third_party/libquic",
384 ]
385 sources += [
386 "quicdatachannel_unittest.cc",
387 "quicdatatransport_unittest.cc",
388 ]
389 }
390
391 deps = []
392 if (is_android) {
393 sources += [
394 "test/androidtestinitializer.cc",
395 "test/androidtestinitializer.h",
396 ]
397 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700398 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700399 ":libjingle_peerconnection_jni",
400 "//testing/android/native_test:native_test_support",
401 ]
402 }
403
404 deps += [
405 ":libjingle_peerconnection",
406 "..:webrtc_common",
407 "../base:rtc_base_tests_utils",
408 "../media:rtc_unittest_main",
409 "../pc:rtc_pc",
410 "../system_wrappers:metrics_default",
411 "//testing/gmock",
412 ]
413
414 if (is_android) {
415 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700416
417 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700418 }
419 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700420
421 if (is_android) {
422 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
423 apk_name = "libjingle_peerconnection_android_unittest"
424 android_manifest = "androidtests/AndroidManifest.xml"
425
426 java_files = [
427 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
428 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
429 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
430 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
431 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
432 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
433 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
434 "androidtests/src/org/webrtc/PeerConnectionTest.java",
435 "androidtests/src/org/webrtc/RendererCommonTest.java",
436 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
437 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
438 ]
439
440 deps = [
441 ":libjingle_peerconnection_android_unittest_resources",
442 ":libjingle_peerconnection_java",
443 "//base:base_java",
444 "//webrtc/base:base_java",
445 ]
446
447 shared_libraries = [ ":libjingle_peerconnection_so" ]
448 }
449
450 android_resources("libjingle_peerconnection_android_unittest_resources") {
451 resource_dirs = [ "androidtests/res" ]
452 custom_package = "org.webrtc"
453 }
454 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700455}