blob: f09c4e465552d47b888e36c552e065f4b766c8d9 [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",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200160 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700161 "android/jni/classreferenceholder.cc",
162 "android/jni/classreferenceholder.h",
163 "android/jni/jni_helpers.cc",
164 "android/jni/jni_helpers.h",
165 "android/jni/native_handle_impl.cc",
166 "android/jni/native_handle_impl.h",
167 "android/jni/peerconnection_jni.cc",
168 "android/jni/surfacetexturehelper_jni.cc",
169 "android/jni/surfacetexturehelper_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200170 "androidvideotracksource.cc",
171 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700172 ]
173
174 configs += [
175 "..:common_config",
176 ":libjingle_peerconnection_jni_warnings_config",
177 ]
178 public_configs = [ "..:common_inherited_config" ]
179
180 if (is_clang) {
181 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
182 configs -= [
183 "//build/config/clang:extra_warnings",
184 "//build/config/clang:find_bad_constructs",
185 ]
186 }
187
188 # TODO(jschuh): Bug 1348: fix this warning.
189 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
190
191 if (is_win) {
192 cflags += [
193 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
194 "/wd4389", # signed/unsigned mismatch.
195 ]
196 }
197
198 deps = [
199 ":libjingle_peerconnection",
sakal86ccd7b2016-08-22 00:26:01 -0700200 "../system_wrappers:field_trial_default",
kjellanderfd5b4e92016-06-13 12:08:33 -0700201 "../system_wrappers:metrics_default",
202 ]
203
204 if (rtc_build_libyuv) {
205 deps += [ "$rtc_libyuv_dir" ]
206 public_deps = [
207 "$rtc_libyuv_dir",
208 ]
209 } else {
210 # Need to add a directory normally exported by libyuv.
211 include_dirs += [ "$rtc_libyuv_dir/include" ]
212 }
213 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200214
215 shared_library("libjingle_peerconnection_so") {
216 sources = [
sakald34a7112016-07-01 05:10:51 -0700217 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200218 ]
219
220 configs -= [ "//build/config/android:hide_native_jni_exports" ]
221
222 deps = [
223 ":libjingle_peerconnection",
224 ":libjingle_peerconnection_jni",
225 ]
sakala53fa0a2016-08-24 00:48:21 -0700226 output_extension = "so"
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200227 }
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) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700301 cflags = [
302 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
303 # for -Wno-sign-compare
304 "-Wno-sign-compare",
305 "-Wno-unused-function",
306 ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700307 }
308
309 if (!is_win) {
310 cflags = [ "-Wno-sign-compare" ]
311 cflags_cc = [ "-Wno-overloaded-virtual" ]
312 }
313 }
314
315 test("peerconnection_unittests") {
316 testonly = true
317 sources = [
318 "datachannel_unittest.cc",
319 "dtmfsender_unittest.cc",
320 "fakemetricsobserver.cc",
321 "fakemetricsobserver.h",
322 "jsepsessiondescription_unittest.cc",
323 "localaudiosource_unittest.cc",
324 "mediaconstraintsinterface_unittest.cc",
325 "mediastream_unittest.cc",
326 "peerconnection_unittest.cc",
327 "peerconnectionendtoend_unittest.cc",
328 "peerconnectionfactory_unittest.cc",
329 "peerconnectioninterface_unittest.cc",
330 "proxy_unittest.cc",
331 "rtpsenderreceiver_unittest.cc",
332 "statscollector_unittest.cc",
333 "test/fakeaudiocapturemodule.cc",
334 "test/fakeaudiocapturemodule.h",
335 "test/fakeaudiocapturemodule_unittest.cc",
336 "test/fakeconstraints.h",
337 "test/fakedatachannelprovider.h",
338 "test/fakeperiodicvideocapturer.h",
339 "test/fakertccertificategenerator.h",
340 "test/fakevideotrackrenderer.h",
hbosd565b732016-08-30 14:04:35 -0700341 "test/mock_datachannel.h",
hbosb24b1ce2016-08-16 01:19:43 -0700342 "test/mock_peerconnection.h",
343 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700344 "test/mockpeerconnectionobservers.h",
345 "test/peerconnectiontestwrapper.cc",
346 "test/peerconnectiontestwrapper.h",
347 "test/testsdpstrings.h",
348 "videocapturertracksource_unittest.cc",
349 "videotrack_unittest.cc",
350 "webrtcsdp_unittest.cc",
351 "webrtcsession_unittest.cc",
352 ]
353
354 defines = [ "HAVE_SCTP" ]
355
356 configs += [
357 "..:common_config",
358 ":peerconnection_unittests_config",
359 ]
360 public_configs = [ "..:common_inherited_config" ]
361
362 if (is_clang) {
363 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
364 configs -= [ "//build/config/clang:find_bad_constructs" ]
365 }
366
367 # TODO(jschuh): Bug 1348: fix this warning.
368 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
369
370 if (is_win) {
371 cflags = [
372 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
373 "/wd4389", # signed/unsigned mismatch.
374 ]
375 }
376
377 if (rtc_use_quic) {
378 public_deps = [
379 "//third_party/libquic",
380 ]
381 sources += [
382 "quicdatachannel_unittest.cc",
383 "quicdatatransport_unittest.cc",
384 ]
385 }
386
387 deps = []
388 if (is_android) {
389 sources += [
390 "test/androidtestinitializer.cc",
391 "test/androidtestinitializer.h",
392 ]
393 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700394 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700395 ":libjingle_peerconnection_jni",
396 "//testing/android/native_test:native_test_support",
397 ]
398 }
399
400 deps += [
401 ":libjingle_peerconnection",
402 "..:webrtc_common",
403 "../base:rtc_base_tests_utils",
404 "../media:rtc_unittest_main",
405 "../pc:rtc_pc",
406 "../system_wrappers:metrics_default",
407 "//testing/gmock",
408 ]
409
410 if (is_android) {
411 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700412
413 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700414 }
415 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700416
417 if (is_android) {
418 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
419 apk_name = "libjingle_peerconnection_android_unittest"
420 android_manifest = "androidtests/AndroidManifest.xml"
421
422 java_files = [
423 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
424 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
425 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
426 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
427 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
428 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
429 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
430 "androidtests/src/org/webrtc/PeerConnectionTest.java",
431 "androidtests/src/org/webrtc/RendererCommonTest.java",
432 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
433 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
434 ]
435
436 deps = [
437 ":libjingle_peerconnection_android_unittest_resources",
438 ":libjingle_peerconnection_java",
439 "//base:base_java",
440 "//webrtc/base:base_java",
441 ]
442
443 shared_libraries = [ ":libjingle_peerconnection_so" ]
444 }
445
446 android_resources("libjingle_peerconnection_android_unittest_resources") {
447 resource_dirs = [ "androidtests/res" ]
448 custom_package = "org.webrtc"
449 }
450 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700451}