blob: 792051a4fe22d19ac8c1aa339a4e8c44700bff1a [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 ]
227 }
228
229 android_library("libjingle_peerconnection_java") {
230 java_files = [
231 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
232 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
233 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
234 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
235 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
236 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700237 "android/java/src/org/webrtc/AudioSource.java",
238 "android/java/src/org/webrtc/AudioTrack.java",
239 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
240 "android/java/src/org/webrtc/Camera1Enumerator.java",
241 "android/java/src/org/webrtc/Camera2Capturer.java",
242 "android/java/src/org/webrtc/Camera2Enumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700243 "android/java/src/org/webrtc/Camera2Session.java",
244 "android/java/src/org/webrtc/CameraCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700245 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
246 "android/java/src/org/webrtc/CameraEnumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700247 "android/java/src/org/webrtc/CameraSession.java",
sakald34a7112016-07-01 05:10:51 -0700248 "android/java/src/org/webrtc/CameraVideoCapturer.java",
249 "android/java/src/org/webrtc/DataChannel.java",
250 "android/java/src/org/webrtc/EglBase.java",
251 "android/java/src/org/webrtc/EglBase10.java",
252 "android/java/src/org/webrtc/EglBase14.java",
253 "android/java/src/org/webrtc/GlRectDrawer.java",
254 "android/java/src/org/webrtc/GlShader.java",
255 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
256 "android/java/src/org/webrtc/GlUtil.java",
257 "android/java/src/org/webrtc/IceCandidate.java",
258 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
259 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
260 "android/java/src/org/webrtc/MediaConstraints.java",
261 "android/java/src/org/webrtc/MediaSource.java",
262 "android/java/src/org/webrtc/MediaStream.java",
263 "android/java/src/org/webrtc/MediaStreamTrack.java",
264 "android/java/src/org/webrtc/Metrics.java",
265 "android/java/src/org/webrtc/NetworkMonitor.java",
266 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
267 "android/java/src/org/webrtc/PeerConnection.java",
268 "android/java/src/org/webrtc/PeerConnectionFactory.java",
269 "android/java/src/org/webrtc/RendererCommon.java",
270 "android/java/src/org/webrtc/RtpParameters.java",
271 "android/java/src/org/webrtc/RtpReceiver.java",
272 "android/java/src/org/webrtc/RtpSender.java",
273 "android/java/src/org/webrtc/SdpObserver.java",
274 "android/java/src/org/webrtc/SessionDescription.java",
275 "android/java/src/org/webrtc/StatsObserver.java",
276 "android/java/src/org/webrtc/StatsReport.java",
277 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
278 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
279 "android/java/src/org/webrtc/VideoCapturer.java",
280 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
281 "android/java/src/org/webrtc/VideoRenderer.java",
282 "android/java/src/org/webrtc/VideoRendererGui.java",
283 "android/java/src/org/webrtc/VideoSource.java",
284 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200285 ]
286
287 deps = [
288 "//webrtc/base:base_java",
289 ]
290 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700291}
292
293if (rtc_include_tests) {
294 config("peerconnection_unittests_config") {
295 # The warnings below are enabled by default. Since GN orders compiler flags
296 # for a target before flags from configs, the only way to disable such
297 # warnings is by having them in a separate config, loaded from the target.
298 # TODO(kjellander): Make the code compile without disabling these flags.
299 # See https://bugs.webrtc.org/3307.
300 if (is_clang && is_win) {
301 cflags = [ "-Wno-unused-function" ]
302 }
303
304 if (!is_win) {
305 cflags = [ "-Wno-sign-compare" ]
306 cflags_cc = [ "-Wno-overloaded-virtual" ]
307 }
308 }
309
310 test("peerconnection_unittests") {
311 testonly = true
312 sources = [
313 "datachannel_unittest.cc",
314 "dtmfsender_unittest.cc",
315 "fakemetricsobserver.cc",
316 "fakemetricsobserver.h",
317 "jsepsessiondescription_unittest.cc",
318 "localaudiosource_unittest.cc",
319 "mediaconstraintsinterface_unittest.cc",
320 "mediastream_unittest.cc",
321 "peerconnection_unittest.cc",
322 "peerconnectionendtoend_unittest.cc",
323 "peerconnectionfactory_unittest.cc",
324 "peerconnectioninterface_unittest.cc",
325 "proxy_unittest.cc",
326 "rtpsenderreceiver_unittest.cc",
327 "statscollector_unittest.cc",
328 "test/fakeaudiocapturemodule.cc",
329 "test/fakeaudiocapturemodule.h",
330 "test/fakeaudiocapturemodule_unittest.cc",
331 "test/fakeconstraints.h",
332 "test/fakedatachannelprovider.h",
333 "test/fakeperiodicvideocapturer.h",
334 "test/fakertccertificategenerator.h",
335 "test/fakevideotrackrenderer.h",
hbosb24b1ce2016-08-16 01:19:43 -0700336 "test/mock_peerconnection.h",
337 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700338 "test/mockpeerconnectionobservers.h",
339 "test/peerconnectiontestwrapper.cc",
340 "test/peerconnectiontestwrapper.h",
341 "test/testsdpstrings.h",
342 "videocapturertracksource_unittest.cc",
343 "videotrack_unittest.cc",
344 "webrtcsdp_unittest.cc",
345 "webrtcsession_unittest.cc",
346 ]
347
348 defines = [ "HAVE_SCTP" ]
349
350 configs += [
351 "..:common_config",
352 ":peerconnection_unittests_config",
353 ]
354 public_configs = [ "..:common_inherited_config" ]
355
356 if (is_clang) {
357 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
358 configs -= [ "//build/config/clang:find_bad_constructs" ]
359 }
360
361 # TODO(jschuh): Bug 1348: fix this warning.
362 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
363
364 if (is_win) {
365 cflags = [
366 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
367 "/wd4389", # signed/unsigned mismatch.
368 ]
369 }
370
371 if (rtc_use_quic) {
372 public_deps = [
373 "//third_party/libquic",
374 ]
375 sources += [
376 "quicdatachannel_unittest.cc",
377 "quicdatatransport_unittest.cc",
378 ]
379 }
380
381 deps = []
382 if (is_android) {
383 sources += [
384 "test/androidtestinitializer.cc",
385 "test/androidtestinitializer.h",
386 ]
387 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700388 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700389 ":libjingle_peerconnection_jni",
390 "//testing/android/native_test:native_test_support",
391 ]
392 }
393
394 deps += [
395 ":libjingle_peerconnection",
396 "..:webrtc_common",
397 "../base:rtc_base_tests_utils",
398 "../media:rtc_unittest_main",
399 "../pc:rtc_pc",
400 "../system_wrappers:metrics_default",
401 "//testing/gmock",
402 ]
403
404 if (is_android) {
405 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700406
407 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700408 }
409 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700410
411 if (is_android) {
412 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
413 apk_name = "libjingle_peerconnection_android_unittest"
414 android_manifest = "androidtests/AndroidManifest.xml"
415
416 java_files = [
417 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
418 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
419 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
420 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
421 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
422 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
423 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
424 "androidtests/src/org/webrtc/PeerConnectionTest.java",
425 "androidtests/src/org/webrtc/RendererCommonTest.java",
426 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
427 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
428 ]
429
430 deps = [
431 ":libjingle_peerconnection_android_unittest_resources",
432 ":libjingle_peerconnection_java",
433 "//base:base_java",
434 "//webrtc/base:base_java",
435 ]
436
437 shared_libraries = [ ":libjingle_peerconnection_so" ]
438 }
439
440 android_resources("libjingle_peerconnection_android_unittest_resources") {
441 resource_dirs = [ "androidtests/res" ]
442 custom_package = "org.webrtc"
443 }
444 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700445}