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