blob: c4dc5f53d6076cfb1d3040c56b8026002dccbe88 [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",
201 "../system_wrappers:field_trial_default",
202 "../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",
336 "test/mockpeerconnectionobservers.h",
337 "test/peerconnectiontestwrapper.cc",
338 "test/peerconnectiontestwrapper.h",
339 "test/testsdpstrings.h",
340 "videocapturertracksource_unittest.cc",
341 "videotrack_unittest.cc",
342 "webrtcsdp_unittest.cc",
343 "webrtcsession_unittest.cc",
344 ]
345
346 defines = [ "HAVE_SCTP" ]
347
348 configs += [
349 "..:common_config",
350 ":peerconnection_unittests_config",
351 ]
352 public_configs = [ "..:common_inherited_config" ]
353
354 if (is_clang) {
355 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
356 configs -= [ "//build/config/clang:find_bad_constructs" ]
357 }
358
359 # TODO(jschuh): Bug 1348: fix this warning.
360 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
361
362 if (is_win) {
363 cflags = [
364 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
365 "/wd4389", # signed/unsigned mismatch.
366 ]
367 }
368
369 if (rtc_use_quic) {
370 public_deps = [
371 "//third_party/libquic",
372 ]
373 sources += [
374 "quicdatachannel_unittest.cc",
375 "quicdatatransport_unittest.cc",
376 ]
377 }
378
379 deps = []
380 if (is_android) {
381 sources += [
382 "test/androidtestinitializer.cc",
383 "test/androidtestinitializer.h",
384 ]
385 deps += [
386 ":libjingle_peerconnection_jni",
387 "//testing/android/native_test:native_test_support",
388 ]
389 }
390
391 deps += [
392 ":libjingle_peerconnection",
393 "..:webrtc_common",
394 "../base:rtc_base_tests_utils",
395 "../media:rtc_unittest_main",
396 "../pc:rtc_pc",
397 "../system_wrappers:metrics_default",
398 "//testing/gmock",
399 ]
400
401 if (is_android) {
402 deps += [ "//testing/android/native_test:native_test_support" ]
403 }
404 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700405
406 if (is_android) {
407 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
408 apk_name = "libjingle_peerconnection_android_unittest"
409 android_manifest = "androidtests/AndroidManifest.xml"
410
411 java_files = [
412 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
413 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
414 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
415 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
416 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
417 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
418 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
419 "androidtests/src/org/webrtc/PeerConnectionTest.java",
420 "androidtests/src/org/webrtc/RendererCommonTest.java",
421 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
422 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
423 ]
424
425 deps = [
426 ":libjingle_peerconnection_android_unittest_resources",
427 ":libjingle_peerconnection_java",
428 "//base:base_java",
429 "//webrtc/base:base_java",
430 ]
431
432 shared_libraries = [ ":libjingle_peerconnection_so" ]
433 }
434
435 android_resources("libjingle_peerconnection_android_unittest_resources") {
436 resource_dirs = [ "androidtests/res" ]
437 custom_package = "org.webrtc"
438 }
439 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700440}