blob: 2c26724917c989abaa4b0c11e1870ea71552cc90 [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",
sakale39f2512016-08-29 07:31:25 -0700159 "android/jni/androidvideocapturer_jni.cc",
160 "android/jni/androidvideocapturer_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200161 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700162 "android/jni/classreferenceholder.cc",
163 "android/jni/classreferenceholder.h",
164 "android/jni/jni_helpers.cc",
165 "android/jni/jni_helpers.h",
166 "android/jni/native_handle_impl.cc",
167 "android/jni/native_handle_impl.h",
168 "android/jni/peerconnection_jni.cc",
169 "android/jni/surfacetexturehelper_jni.cc",
170 "android/jni/surfacetexturehelper_jni.h",
sakale39f2512016-08-29 07:31:25 -0700171 "androidvideocapturer.cc",
172 "androidvideocapturer.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200173 "androidvideotracksource.cc",
174 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700175 ]
176
177 configs += [
178 "..:common_config",
179 ":libjingle_peerconnection_jni_warnings_config",
180 ]
181 public_configs = [ "..:common_inherited_config" ]
182
183 if (is_clang) {
184 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
185 configs -= [
186 "//build/config/clang:extra_warnings",
187 "//build/config/clang:find_bad_constructs",
188 ]
189 }
190
191 # TODO(jschuh): Bug 1348: fix this warning.
192 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
193
194 if (is_win) {
195 cflags += [
196 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
197 "/wd4389", # signed/unsigned mismatch.
198 ]
199 }
200
201 deps = [
202 ":libjingle_peerconnection",
sakal86ccd7b2016-08-22 00:26:01 -0700203 "../system_wrappers:field_trial_default",
kjellanderfd5b4e92016-06-13 12:08:33 -0700204 "../system_wrappers:metrics_default",
205 ]
206
207 if (rtc_build_libyuv) {
208 deps += [ "$rtc_libyuv_dir" ]
209 public_deps = [
210 "$rtc_libyuv_dir",
211 ]
212 } else {
213 # Need to add a directory normally exported by libyuv.
214 include_dirs += [ "$rtc_libyuv_dir/include" ]
215 }
216 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200217
218 shared_library("libjingle_peerconnection_so") {
219 sources = [
sakald34a7112016-07-01 05:10:51 -0700220 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200221 ]
222
223 configs -= [ "//build/config/android:hide_native_jni_exports" ]
224
225 deps = [
226 ":libjingle_peerconnection",
227 ":libjingle_peerconnection_jni",
228 ]
sakala53fa0a2016-08-24 00:48:21 -0700229 output_extension = "so"
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200230 }
231
232 android_library("libjingle_peerconnection_java") {
233 java_files = [
234 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
235 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
236 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
237 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
238 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
239 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700240 "android/java/src/org/webrtc/AudioSource.java",
241 "android/java/src/org/webrtc/AudioTrack.java",
242 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
243 "android/java/src/org/webrtc/Camera1Enumerator.java",
244 "android/java/src/org/webrtc/Camera2Capturer.java",
245 "android/java/src/org/webrtc/Camera2Enumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700246 "android/java/src/org/webrtc/Camera2Session.java",
247 "android/java/src/org/webrtc/CameraCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700248 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
249 "android/java/src/org/webrtc/CameraEnumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700250 "android/java/src/org/webrtc/CameraSession.java",
sakald34a7112016-07-01 05:10:51 -0700251 "android/java/src/org/webrtc/CameraVideoCapturer.java",
252 "android/java/src/org/webrtc/DataChannel.java",
253 "android/java/src/org/webrtc/EglBase.java",
254 "android/java/src/org/webrtc/EglBase10.java",
255 "android/java/src/org/webrtc/EglBase14.java",
256 "android/java/src/org/webrtc/GlRectDrawer.java",
257 "android/java/src/org/webrtc/GlShader.java",
258 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
259 "android/java/src/org/webrtc/GlUtil.java",
260 "android/java/src/org/webrtc/IceCandidate.java",
261 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
262 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
263 "android/java/src/org/webrtc/MediaConstraints.java",
264 "android/java/src/org/webrtc/MediaSource.java",
265 "android/java/src/org/webrtc/MediaStream.java",
266 "android/java/src/org/webrtc/MediaStreamTrack.java",
267 "android/java/src/org/webrtc/Metrics.java",
268 "android/java/src/org/webrtc/NetworkMonitor.java",
269 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
270 "android/java/src/org/webrtc/PeerConnection.java",
271 "android/java/src/org/webrtc/PeerConnectionFactory.java",
272 "android/java/src/org/webrtc/RendererCommon.java",
273 "android/java/src/org/webrtc/RtpParameters.java",
274 "android/java/src/org/webrtc/RtpReceiver.java",
275 "android/java/src/org/webrtc/RtpSender.java",
276 "android/java/src/org/webrtc/SdpObserver.java",
277 "android/java/src/org/webrtc/SessionDescription.java",
278 "android/java/src/org/webrtc/StatsObserver.java",
279 "android/java/src/org/webrtc/StatsReport.java",
280 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
281 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
282 "android/java/src/org/webrtc/VideoCapturer.java",
283 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
284 "android/java/src/org/webrtc/VideoRenderer.java",
285 "android/java/src/org/webrtc/VideoRendererGui.java",
286 "android/java/src/org/webrtc/VideoSource.java",
287 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200288 ]
289
290 deps = [
291 "//webrtc/base:base_java",
292 ]
293 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700294}
295
296if (rtc_include_tests) {
297 config("peerconnection_unittests_config") {
298 # The warnings below are enabled by default. Since GN orders compiler flags
299 # for a target before flags from configs, the only way to disable such
300 # warnings is by having them in a separate config, loaded from the target.
301 # TODO(kjellander): Make the code compile without disabling these flags.
302 # See https://bugs.webrtc.org/3307.
303 if (is_clang && is_win) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700304 cflags = [
305 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
306 # for -Wno-sign-compare
307 "-Wno-sign-compare",
308 "-Wno-unused-function",
309 ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700310 }
311
312 if (!is_win) {
313 cflags = [ "-Wno-sign-compare" ]
314 cflags_cc = [ "-Wno-overloaded-virtual" ]
315 }
316 }
317
318 test("peerconnection_unittests") {
319 testonly = true
320 sources = [
321 "datachannel_unittest.cc",
322 "dtmfsender_unittest.cc",
323 "fakemetricsobserver.cc",
324 "fakemetricsobserver.h",
325 "jsepsessiondescription_unittest.cc",
326 "localaudiosource_unittest.cc",
327 "mediaconstraintsinterface_unittest.cc",
328 "mediastream_unittest.cc",
329 "peerconnection_unittest.cc",
330 "peerconnectionendtoend_unittest.cc",
331 "peerconnectionfactory_unittest.cc",
332 "peerconnectioninterface_unittest.cc",
333 "proxy_unittest.cc",
334 "rtpsenderreceiver_unittest.cc",
335 "statscollector_unittest.cc",
336 "test/fakeaudiocapturemodule.cc",
337 "test/fakeaudiocapturemodule.h",
338 "test/fakeaudiocapturemodule_unittest.cc",
339 "test/fakeconstraints.h",
340 "test/fakedatachannelprovider.h",
341 "test/fakeperiodicvideocapturer.h",
342 "test/fakertccertificategenerator.h",
343 "test/fakevideotrackrenderer.h",
hbosb24b1ce2016-08-16 01:19:43 -0700344 "test/mock_peerconnection.h",
345 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700346 "test/mockpeerconnectionobservers.h",
347 "test/peerconnectiontestwrapper.cc",
348 "test/peerconnectiontestwrapper.h",
349 "test/testsdpstrings.h",
350 "videocapturertracksource_unittest.cc",
351 "videotrack_unittest.cc",
352 "webrtcsdp_unittest.cc",
353 "webrtcsession_unittest.cc",
354 ]
355
356 defines = [ "HAVE_SCTP" ]
357
358 configs += [
359 "..:common_config",
360 ":peerconnection_unittests_config",
361 ]
362 public_configs = [ "..:common_inherited_config" ]
363
364 if (is_clang) {
365 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
366 configs -= [ "//build/config/clang:find_bad_constructs" ]
367 }
368
369 # TODO(jschuh): Bug 1348: fix this warning.
370 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
371
372 if (is_win) {
373 cflags = [
374 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
375 "/wd4389", # signed/unsigned mismatch.
376 ]
377 }
378
379 if (rtc_use_quic) {
380 public_deps = [
381 "//third_party/libquic",
382 ]
383 sources += [
384 "quicdatachannel_unittest.cc",
385 "quicdatatransport_unittest.cc",
386 ]
387 }
388
389 deps = []
390 if (is_android) {
391 sources += [
392 "test/androidtestinitializer.cc",
393 "test/androidtestinitializer.h",
394 ]
395 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700396 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700397 ":libjingle_peerconnection_jni",
398 "//testing/android/native_test:native_test_support",
399 ]
400 }
401
402 deps += [
403 ":libjingle_peerconnection",
404 "..:webrtc_common",
405 "../base:rtc_base_tests_utils",
406 "../media:rtc_unittest_main",
407 "../pc:rtc_pc",
408 "../system_wrappers:metrics_default",
409 "//testing/gmock",
410 ]
411
412 if (is_android) {
413 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700414
415 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700416 }
417 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700418
419 if (is_android) {
420 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
421 apk_name = "libjingle_peerconnection_android_unittest"
422 android_manifest = "androidtests/AndroidManifest.xml"
423
424 java_files = [
425 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
426 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
427 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
428 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
429 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
430 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
431 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
432 "androidtests/src/org/webrtc/PeerConnectionTest.java",
433 "androidtests/src/org/webrtc/RendererCommonTest.java",
434 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
435 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
436 ]
437
438 deps = [
439 ":libjingle_peerconnection_android_unittest_resources",
440 ":libjingle_peerconnection_java",
441 "//base:base_java",
442 "//webrtc/base:base_java",
443 ]
444
445 shared_libraries = [ ":libjingle_peerconnection_so" ]
446 }
447
448 android_resources("libjingle_peerconnection_android_unittest_resources") {
449 resource_dirs = [ "androidtests/res" ]
450 custom_package = "org.webrtc"
451 }
452 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700453}