blob: d14fe1f19e2680cbcf061cbf446b6797e2781a0e [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
kjellandera69d9732016-08-31 07:33:05 -070022source_set("call_api") {
23 sources = [
24 "call/audio_receive_stream.h",
25 "call/audio_send_stream.h",
26 "call/audio_sink.h",
27 "call/audio_state.h",
28 ]
29
30 configs += [ "..:common_config" ]
31 public_configs = [ "..:common_inherited_config" ]
32
33 deps = [
34 # TODO(kjellander): Add remaining dependencies when webrtc:4243 is done.
35 "..:webrtc_common",
36 "../base:rtc_base_approved",
37 "../modules/audio_coding:audio_encoder_interface",
38 ]
39}
40
kjellanderc76dc952016-06-03 03:09:32 -070041config("libjingle_peerconnection_warnings_config") {
42 # GN orders flags on a target before flags from configs. The default config
43 # adds these flags so to cancel them out they need to come from a config and
44 # cannot be on the target directly.
kjellander3e33bfe2016-06-20 07:04:09 -070045 if (!is_win && !is_clang) {
46 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
kjellanderc76dc952016-06-03 03:09:32 -070047 }
48}
49
50source_set("libjingle_peerconnection") {
51 cflags = []
52 sources = [
53 "audiotrack.cc",
54 "audiotrack.h",
55 "datachannel.cc",
56 "datachannel.h",
57 "datachannelinterface.h",
kjellanderc76dc952016-06-03 03:09:32 -070058 "dtmfsender.cc",
59 "dtmfsender.h",
60 "dtmfsenderinterface.h",
61 "jsep.h",
62 "jsepicecandidate.cc",
63 "jsepicecandidate.h",
64 "jsepsessiondescription.cc",
65 "jsepsessiondescription.h",
66 "localaudiosource.cc",
67 "localaudiosource.h",
68 "mediaconstraintsinterface.cc",
69 "mediaconstraintsinterface.h",
70 "mediacontroller.cc",
71 "mediacontroller.h",
72 "mediastream.cc",
73 "mediastream.h",
74 "mediastreaminterface.h",
75 "mediastreamobserver.cc",
76 "mediastreamobserver.h",
kjellanderc76dc952016-06-03 03:09:32 -070077 "mediastreamproxy.h",
78 "mediastreamtrack.h",
79 "mediastreamtrackproxy.h",
80 "notifier.h",
81 "peerconnection.cc",
82 "peerconnection.h",
83 "peerconnectionfactory.cc",
84 "peerconnectionfactory.h",
85 "peerconnectionfactoryproxy.h",
86 "peerconnectioninterface.h",
87 "peerconnectionproxy.h",
88 "proxy.h",
89 "remoteaudiosource.cc",
90 "remoteaudiosource.h",
hbos615d3012016-08-24 01:33:13 -070091 "rtcstats.h",
hbosd565b732016-08-30 14:04:35 -070092 "rtcstats_objects.h",
hbos615d3012016-08-24 01:33:13 -070093 "rtcstatsreport.h",
kjellanderc76dc952016-06-03 03:09:32 -070094 "rtpparameters.h",
95 "rtpreceiver.cc",
96 "rtpreceiver.h",
97 "rtpreceiverinterface.h",
98 "rtpsender.cc",
99 "rtpsender.h",
100 "rtpsenderinterface.h",
101 "sctputils.cc",
102 "sctputils.h",
103 "statscollector.cc",
104 "statscollector.h",
105 "statstypes.cc",
106 "statstypes.h",
107 "streamcollection.h",
108 "videocapturertracksource.cc",
109 "videocapturertracksource.h",
110 "videosourceproxy.h",
111 "videotrack.cc",
112 "videotrack.h",
113 "videotracksource.cc",
114 "videotracksource.h",
115 "webrtcsdp.cc",
116 "webrtcsdp.h",
117 "webrtcsession.cc",
118 "webrtcsession.h",
119 "webrtcsessiondescriptionfactory.cc",
120 "webrtcsessiondescriptionfactory.h",
121 ]
122
123 configs += [
124 "..:common_config",
125 ":libjingle_peerconnection_warnings_config",
126 ]
127 public_configs = [ "..:common_inherited_config" ]
128
129 if (is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700130 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellanderc76dc952016-06-03 03:09:32 -0700131 configs -= [ "//build/config/clang:find_bad_constructs" ]
132 }
133
kjellanderc76dc952016-06-03 03:09:32 -0700134 deps = [
kjellandera69d9732016-08-31 07:33:05 -0700135 ":call_api",
katrielc14897d02016-06-03 13:14:28 -0700136 "../call",
kjellanderc76dc952016-06-03 03:09:32 -0700137 "../media",
138 "../pc",
139 ]
140
141 if (rtc_use_quic) {
142 sources += [
143 "quicdatachannel.cc",
144 "quicdatachannel.h",
145 "quicdatatransport.cc",
146 "quicdatatransport.h",
147 ]
148 deps += [ "//third_party/libquic" ]
149 public_deps = [
150 "//third_party/libquic",
151 ]
152 }
153}
kjellanderfd5b4e92016-06-13 12:08:33 -0700154
kjellander69b34622016-06-21 01:05:16 -0700155# Exclude the targets below from the Chromium build since they cannot be built
156# due to incompability with Chromium's logging implementation.
157if (is_android && !build_with_chromium) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700158 config("libjingle_peerconnection_jni_warnings_config") {
159 # The warnings below are enabled by default. Since GN orders compiler flags
160 # for a target before flags from configs, the only way to disable such
161 # warnings is by having them in a separate config, loaded from the target.
162 if (!is_win) {
163 cflags = [
164 "-Wno-sign-compare",
165 "-Wno-unused-variable",
166 ]
167 }
168 }
169
170 source_set("libjingle_peerconnection_jni") {
171 sources = [
sakald34a7112016-07-01 05:10:51 -0700172 "android/jni/androidmediacodeccommon.h",
173 "android/jni/androidmediadecoder_jni.cc",
174 "android/jni/androidmediadecoder_jni.h",
175 "android/jni/androidmediaencoder_jni.cc",
176 "android/jni/androidmediaencoder_jni.h",
177 "android/jni/androidmetrics_jni.cc",
178 "android/jni/androidnetworkmonitor_jni.cc",
179 "android/jni/androidnetworkmonitor_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200180 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700181 "android/jni/classreferenceholder.cc",
182 "android/jni/classreferenceholder.h",
183 "android/jni/jni_helpers.cc",
184 "android/jni/jni_helpers.h",
185 "android/jni/native_handle_impl.cc",
186 "android/jni/native_handle_impl.h",
187 "android/jni/peerconnection_jni.cc",
188 "android/jni/surfacetexturehelper_jni.cc",
189 "android/jni/surfacetexturehelper_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200190 "androidvideotracksource.cc",
191 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700192 ]
193
194 configs += [
195 "..:common_config",
196 ":libjingle_peerconnection_jni_warnings_config",
197 ]
198 public_configs = [ "..:common_inherited_config" ]
199
200 if (is_clang) {
201 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
202 configs -= [
203 "//build/config/clang:extra_warnings",
204 "//build/config/clang:find_bad_constructs",
205 ]
206 }
207
208 # TODO(jschuh): Bug 1348: fix this warning.
209 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
210
211 if (is_win) {
212 cflags += [
213 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
214 "/wd4389", # signed/unsigned mismatch.
215 ]
216 }
217
218 deps = [
219 ":libjingle_peerconnection",
sakal86ccd7b2016-08-22 00:26:01 -0700220 "../system_wrappers:field_trial_default",
kjellanderfd5b4e92016-06-13 12:08:33 -0700221 "../system_wrappers:metrics_default",
222 ]
223
224 if (rtc_build_libyuv) {
225 deps += [ "$rtc_libyuv_dir" ]
226 public_deps = [
227 "$rtc_libyuv_dir",
228 ]
229 } else {
230 # Need to add a directory normally exported by libyuv.
231 include_dirs += [ "$rtc_libyuv_dir/include" ]
232 }
233 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200234
235 shared_library("libjingle_peerconnection_so") {
236 sources = [
sakald34a7112016-07-01 05:10:51 -0700237 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200238 ]
239
240 configs -= [ "//build/config/android:hide_native_jni_exports" ]
241
242 deps = [
243 ":libjingle_peerconnection",
244 ":libjingle_peerconnection_jni",
245 ]
sakala53fa0a2016-08-24 00:48:21 -0700246 output_extension = "so"
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200247 }
248
249 android_library("libjingle_peerconnection_java") {
250 java_files = [
251 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
252 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
253 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
254 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
255 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
256 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700257 "android/java/src/org/webrtc/AudioSource.java",
258 "android/java/src/org/webrtc/AudioTrack.java",
259 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
260 "android/java/src/org/webrtc/Camera1Enumerator.java",
261 "android/java/src/org/webrtc/Camera2Capturer.java",
262 "android/java/src/org/webrtc/Camera2Enumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700263 "android/java/src/org/webrtc/Camera2Session.java",
264 "android/java/src/org/webrtc/CameraCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700265 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
266 "android/java/src/org/webrtc/CameraEnumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700267 "android/java/src/org/webrtc/CameraSession.java",
sakald34a7112016-07-01 05:10:51 -0700268 "android/java/src/org/webrtc/CameraVideoCapturer.java",
269 "android/java/src/org/webrtc/DataChannel.java",
270 "android/java/src/org/webrtc/EglBase.java",
271 "android/java/src/org/webrtc/EglBase10.java",
272 "android/java/src/org/webrtc/EglBase14.java",
273 "android/java/src/org/webrtc/GlRectDrawer.java",
274 "android/java/src/org/webrtc/GlShader.java",
275 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
276 "android/java/src/org/webrtc/GlUtil.java",
277 "android/java/src/org/webrtc/IceCandidate.java",
278 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
279 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
280 "android/java/src/org/webrtc/MediaConstraints.java",
281 "android/java/src/org/webrtc/MediaSource.java",
282 "android/java/src/org/webrtc/MediaStream.java",
283 "android/java/src/org/webrtc/MediaStreamTrack.java",
284 "android/java/src/org/webrtc/Metrics.java",
285 "android/java/src/org/webrtc/NetworkMonitor.java",
286 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
287 "android/java/src/org/webrtc/PeerConnection.java",
288 "android/java/src/org/webrtc/PeerConnectionFactory.java",
289 "android/java/src/org/webrtc/RendererCommon.java",
290 "android/java/src/org/webrtc/RtpParameters.java",
291 "android/java/src/org/webrtc/RtpReceiver.java",
292 "android/java/src/org/webrtc/RtpSender.java",
293 "android/java/src/org/webrtc/SdpObserver.java",
294 "android/java/src/org/webrtc/SessionDescription.java",
295 "android/java/src/org/webrtc/StatsObserver.java",
296 "android/java/src/org/webrtc/StatsReport.java",
297 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
298 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
299 "android/java/src/org/webrtc/VideoCapturer.java",
300 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
301 "android/java/src/org/webrtc/VideoRenderer.java",
302 "android/java/src/org/webrtc/VideoRendererGui.java",
303 "android/java/src/org/webrtc/VideoSource.java",
304 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200305 ]
306
307 deps = [
308 "//webrtc/base:base_java",
309 ]
310 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700311}
312
313if (rtc_include_tests) {
314 config("peerconnection_unittests_config") {
315 # The warnings below are enabled by default. Since GN orders compiler flags
316 # for a target before flags from configs, the only way to disable such
317 # warnings is by having them in a separate config, loaded from the target.
318 # TODO(kjellander): Make the code compile without disabling these flags.
319 # See https://bugs.webrtc.org/3307.
320 if (is_clang && is_win) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700321 cflags = [
322 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
323 # for -Wno-sign-compare
324 "-Wno-sign-compare",
325 "-Wno-unused-function",
326 ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700327 }
328
329 if (!is_win) {
330 cflags = [ "-Wno-sign-compare" ]
331 cflags_cc = [ "-Wno-overloaded-virtual" ]
332 }
333 }
334
335 test("peerconnection_unittests") {
336 testonly = true
337 sources = [
338 "datachannel_unittest.cc",
339 "dtmfsender_unittest.cc",
340 "fakemetricsobserver.cc",
341 "fakemetricsobserver.h",
342 "jsepsessiondescription_unittest.cc",
343 "localaudiosource_unittest.cc",
344 "mediaconstraintsinterface_unittest.cc",
345 "mediastream_unittest.cc",
346 "peerconnection_unittest.cc",
347 "peerconnectionendtoend_unittest.cc",
348 "peerconnectionfactory_unittest.cc",
349 "peerconnectioninterface_unittest.cc",
350 "proxy_unittest.cc",
351 "rtpsenderreceiver_unittest.cc",
352 "statscollector_unittest.cc",
353 "test/fakeaudiocapturemodule.cc",
354 "test/fakeaudiocapturemodule.h",
355 "test/fakeaudiocapturemodule_unittest.cc",
356 "test/fakeconstraints.h",
357 "test/fakedatachannelprovider.h",
358 "test/fakeperiodicvideocapturer.h",
359 "test/fakertccertificategenerator.h",
360 "test/fakevideotrackrenderer.h",
hbosd565b732016-08-30 14:04:35 -0700361 "test/mock_datachannel.h",
hbosb24b1ce2016-08-16 01:19:43 -0700362 "test/mock_peerconnection.h",
363 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700364 "test/mockpeerconnectionobservers.h",
365 "test/peerconnectiontestwrapper.cc",
366 "test/peerconnectiontestwrapper.h",
367 "test/testsdpstrings.h",
368 "videocapturertracksource_unittest.cc",
369 "videotrack_unittest.cc",
370 "webrtcsdp_unittest.cc",
371 "webrtcsession_unittest.cc",
372 ]
373
374 defines = [ "HAVE_SCTP" ]
375
376 configs += [
377 "..:common_config",
378 ":peerconnection_unittests_config",
379 ]
380 public_configs = [ "..:common_inherited_config" ]
381
382 if (is_clang) {
383 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
384 configs -= [ "//build/config/clang:find_bad_constructs" ]
385 }
386
387 # TODO(jschuh): Bug 1348: fix this warning.
388 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
389
390 if (is_win) {
391 cflags = [
392 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
393 "/wd4389", # signed/unsigned mismatch.
394 ]
395 }
396
397 if (rtc_use_quic) {
398 public_deps = [
399 "//third_party/libquic",
400 ]
401 sources += [
402 "quicdatachannel_unittest.cc",
403 "quicdatatransport_unittest.cc",
404 ]
405 }
406
407 deps = []
408 if (is_android) {
409 sources += [
410 "test/androidtestinitializer.cc",
411 "test/androidtestinitializer.h",
412 ]
413 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700414 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700415 ":libjingle_peerconnection_jni",
416 "//testing/android/native_test:native_test_support",
417 ]
418 }
419
420 deps += [
421 ":libjingle_peerconnection",
422 "..:webrtc_common",
423 "../base:rtc_base_tests_utils",
424 "../media:rtc_unittest_main",
425 "../pc:rtc_pc",
426 "../system_wrappers:metrics_default",
427 "//testing/gmock",
428 ]
429
430 if (is_android) {
431 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700432
433 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700434 }
435 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700436
437 if (is_android) {
438 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
439 apk_name = "libjingle_peerconnection_android_unittest"
440 android_manifest = "androidtests/AndroidManifest.xml"
441
442 java_files = [
443 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
444 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
445 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
446 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
447 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
448 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
449 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
450 "androidtests/src/org/webrtc/PeerConnectionTest.java",
451 "androidtests/src/org/webrtc/RendererCommonTest.java",
452 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
453 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
454 ]
455
456 deps = [
457 ":libjingle_peerconnection_android_unittest_resources",
458 ":libjingle_peerconnection_java",
459 "//base:base_java",
460 "//webrtc/base:base_java",
461 ]
462
463 shared_libraries = [ ":libjingle_peerconnection_so" ]
464 }
465
466 android_resources("libjingle_peerconnection_android_unittest_resources") {
467 resource_dirs = [ "androidtests/res" ]
468 custom_package = "org.webrtc"
469 }
470 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700471}