blob: cae9e65d4e0af9d0ce2c9eaa2e4c64bafc0ca372 [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")
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +020010if (is_android) {
11 import("//build/config/android/config.gni")
12 import("//build/config/android/rules.gni")
13}
kjellanderc76dc952016-06-03 03:09:32 -070014
15group("api") {
16 deps = [
17 ":libjingle_peerconnection",
18 ]
19}
20
ehmaldonado38a21322016-09-02 04:10:34 -070021rtc_source_set("call_api") {
kjellandera69d9732016-08-31 07:33:05 -070022 sources = [
23 "call/audio_receive_stream.h",
24 "call/audio_send_stream.h",
25 "call/audio_sink.h",
26 "call/audio_state.h",
27 ]
28
kjellandera69d9732016-08-31 07:33:05 -070029 deps = [
30 # TODO(kjellander): Add remaining dependencies when webrtc:4243 is done.
31 "..:webrtc_common",
32 "../base:rtc_base_approved",
33 "../modules/audio_coding:audio_encoder_interface",
34 ]
35}
36
kjellanderc76dc952016-06-03 03:09:32 -070037config("libjingle_peerconnection_warnings_config") {
38 # GN orders flags on a target before flags from configs. The default config
39 # adds these flags so to cancel them out they need to come from a config and
40 # cannot be on the target directly.
kjellander3e33bfe2016-06-20 07:04:09 -070041 if (!is_win && !is_clang) {
42 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
kjellanderc76dc952016-06-03 03:09:32 -070043 }
44}
45
ehmaldonado38a21322016-09-02 04:10:34 -070046rtc_source_set("libjingle_peerconnection") {
kjellanderc76dc952016-06-03 03:09:32 -070047 cflags = []
48 sources = [
49 "audiotrack.cc",
50 "audiotrack.h",
51 "datachannel.cc",
52 "datachannel.h",
53 "datachannelinterface.h",
kjellanderc76dc952016-06-03 03:09:32 -070054 "dtmfsender.cc",
55 "dtmfsender.h",
56 "dtmfsenderinterface.h",
57 "jsep.h",
58 "jsepicecandidate.cc",
59 "jsepicecandidate.h",
60 "jsepsessiondescription.cc",
61 "jsepsessiondescription.h",
62 "localaudiosource.cc",
63 "localaudiosource.h",
64 "mediaconstraintsinterface.cc",
65 "mediaconstraintsinterface.h",
66 "mediacontroller.cc",
67 "mediacontroller.h",
68 "mediastream.cc",
69 "mediastream.h",
70 "mediastreaminterface.h",
71 "mediastreamobserver.cc",
72 "mediastreamobserver.h",
kjellanderc76dc952016-06-03 03:09:32 -070073 "mediastreamproxy.h",
74 "mediastreamtrack.h",
75 "mediastreamtrackproxy.h",
76 "notifier.h",
77 "peerconnection.cc",
78 "peerconnection.h",
79 "peerconnectionfactory.cc",
80 "peerconnectionfactory.h",
81 "peerconnectionfactoryproxy.h",
82 "peerconnectioninterface.h",
83 "peerconnectionproxy.h",
84 "proxy.h",
85 "remoteaudiosource.cc",
86 "remoteaudiosource.h",
hbos615d3012016-08-24 01:33:13 -070087 "rtcstats.h",
hbosd565b732016-08-30 14:04:35 -070088 "rtcstats_objects.h",
hbos615d3012016-08-24 01:33:13 -070089 "rtcstatsreport.h",
kjellanderc76dc952016-06-03 03:09:32 -070090 "rtpparameters.h",
91 "rtpreceiver.cc",
92 "rtpreceiver.h",
93 "rtpreceiverinterface.h",
94 "rtpsender.cc",
95 "rtpsender.h",
96 "rtpsenderinterface.h",
97 "sctputils.cc",
98 "sctputils.h",
99 "statscollector.cc",
100 "statscollector.h",
101 "statstypes.cc",
102 "statstypes.h",
103 "streamcollection.h",
104 "videocapturertracksource.cc",
105 "videocapturertracksource.h",
106 "videosourceproxy.h",
107 "videotrack.cc",
108 "videotrack.h",
109 "videotracksource.cc",
110 "videotracksource.h",
111 "webrtcsdp.cc",
112 "webrtcsdp.h",
113 "webrtcsession.cc",
114 "webrtcsession.h",
115 "webrtcsessiondescriptionfactory.cc",
116 "webrtcsessiondescriptionfactory.h",
117 ]
118
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700119 configs += [ ":libjingle_peerconnection_warnings_config" ]
kjellanderc76dc952016-06-03 03:09:32 -0700120
121 if (is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700122 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700123 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderc76dc952016-06-03 03:09:32 -0700124 }
125
kjellanderc76dc952016-06-03 03:09:32 -0700126 deps = [
kjellandera69d9732016-08-31 07:33:05 -0700127 ":call_api",
katrielc14897d02016-06-03 13:14:28 -0700128 "../call",
kjellanderc76dc952016-06-03 03:09:32 -0700129 "../media",
130 "../pc",
131 ]
132
133 if (rtc_use_quic) {
134 sources += [
135 "quicdatachannel.cc",
136 "quicdatachannel.h",
137 "quicdatatransport.cc",
138 "quicdatatransport.h",
139 ]
140 deps += [ "//third_party/libquic" ]
141 public_deps = [
142 "//third_party/libquic",
143 ]
144 }
145}
kjellanderfd5b4e92016-06-13 12:08:33 -0700146
kjellander69b34622016-06-21 01:05:16 -0700147# Exclude the targets below from the Chromium build since they cannot be built
148# due to incompability with Chromium's logging implementation.
149if (is_android && !build_with_chromium) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700150 config("libjingle_peerconnection_jni_warnings_config") {
151 # The warnings below are enabled by default. Since GN orders compiler flags
152 # for a target before flags from configs, the only way to disable such
153 # warnings is by having them in a separate config, loaded from the target.
154 if (!is_win) {
155 cflags = [
156 "-Wno-sign-compare",
157 "-Wno-unused-variable",
158 ]
159 }
160 }
161
ehmaldonado38a21322016-09-02 04:10:34 -0700162 rtc_source_set("libjingle_peerconnection_jni") {
kjellanderfd5b4e92016-06-13 12:08:33 -0700163 sources = [
sakald34a7112016-07-01 05:10:51 -0700164 "android/jni/androidmediacodeccommon.h",
165 "android/jni/androidmediadecoder_jni.cc",
166 "android/jni/androidmediadecoder_jni.h",
167 "android/jni/androidmediaencoder_jni.cc",
168 "android/jni/androidmediaencoder_jni.h",
169 "android/jni/androidmetrics_jni.cc",
170 "android/jni/androidnetworkmonitor_jni.cc",
171 "android/jni/androidnetworkmonitor_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200172 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700173 "android/jni/classreferenceholder.cc",
174 "android/jni/classreferenceholder.h",
175 "android/jni/jni_helpers.cc",
176 "android/jni/jni_helpers.h",
177 "android/jni/native_handle_impl.cc",
178 "android/jni/native_handle_impl.h",
179 "android/jni/peerconnection_jni.cc",
180 "android/jni/surfacetexturehelper_jni.cc",
181 "android/jni/surfacetexturehelper_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200182 "androidvideotracksource.cc",
183 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700184 ]
185
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700186 configs += [ ":libjingle_peerconnection_jni_warnings_config" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700187
188 if (is_clang) {
189 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700190 suppressed_configs += [
kjellanderfd5b4e92016-06-13 12:08:33 -0700191 "//build/config/clang:extra_warnings",
192 "//build/config/clang:find_bad_constructs",
193 ]
194 }
195
196 # TODO(jschuh): Bug 1348: fix this warning.
197 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
198
199 if (is_win) {
200 cflags += [
201 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
202 "/wd4389", # signed/unsigned mismatch.
203 ]
204 }
205
206 deps = [
207 ":libjingle_peerconnection",
sakal86ccd7b2016-08-22 00:26:01 -0700208 "../system_wrappers:field_trial_default",
kjellanderfd5b4e92016-06-13 12:08:33 -0700209 "../system_wrappers:metrics_default",
210 ]
211
212 if (rtc_build_libyuv) {
213 deps += [ "$rtc_libyuv_dir" ]
214 public_deps = [
215 "$rtc_libyuv_dir",
216 ]
217 } else {
218 # Need to add a directory normally exported by libyuv.
219 include_dirs += [ "$rtc_libyuv_dir/include" ]
220 }
221 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200222
ehmaldonadoacf9f472016-09-08 04:26:37 -0700223 rtc_shared_library("libjingle_peerconnection_so") {
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200224 sources = [
sakald34a7112016-07-01 05:10:51 -0700225 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200226 ]
227
ehmaldonadoacf9f472016-09-08 04:26:37 -0700228 suppressed_configs += [ "//build/config/android:hide_native_jni_exports" ]
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200229
230 deps = [
231 ":libjingle_peerconnection",
232 ":libjingle_peerconnection_jni",
233 ]
sakala53fa0a2016-08-24 00:48:21 -0700234 output_extension = "so"
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200235 }
236
237 android_library("libjingle_peerconnection_java") {
238 java_files = [
239 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
240 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
241 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
242 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
243 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
244 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700245 "android/java/src/org/webrtc/AudioSource.java",
246 "android/java/src/org/webrtc/AudioTrack.java",
247 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
248 "android/java/src/org/webrtc/Camera1Enumerator.java",
249 "android/java/src/org/webrtc/Camera2Capturer.java",
250 "android/java/src/org/webrtc/Camera2Enumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700251 "android/java/src/org/webrtc/Camera2Session.java",
252 "android/java/src/org/webrtc/CameraCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700253 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
254 "android/java/src/org/webrtc/CameraEnumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700255 "android/java/src/org/webrtc/CameraSession.java",
sakald34a7112016-07-01 05:10:51 -0700256 "android/java/src/org/webrtc/CameraVideoCapturer.java",
257 "android/java/src/org/webrtc/DataChannel.java",
258 "android/java/src/org/webrtc/EglBase.java",
259 "android/java/src/org/webrtc/EglBase10.java",
260 "android/java/src/org/webrtc/EglBase14.java",
261 "android/java/src/org/webrtc/GlRectDrawer.java",
262 "android/java/src/org/webrtc/GlShader.java",
263 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
264 "android/java/src/org/webrtc/GlUtil.java",
265 "android/java/src/org/webrtc/IceCandidate.java",
266 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
267 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
268 "android/java/src/org/webrtc/MediaConstraints.java",
269 "android/java/src/org/webrtc/MediaSource.java",
270 "android/java/src/org/webrtc/MediaStream.java",
271 "android/java/src/org/webrtc/MediaStreamTrack.java",
272 "android/java/src/org/webrtc/Metrics.java",
273 "android/java/src/org/webrtc/NetworkMonitor.java",
274 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
275 "android/java/src/org/webrtc/PeerConnection.java",
276 "android/java/src/org/webrtc/PeerConnectionFactory.java",
277 "android/java/src/org/webrtc/RendererCommon.java",
278 "android/java/src/org/webrtc/RtpParameters.java",
279 "android/java/src/org/webrtc/RtpReceiver.java",
280 "android/java/src/org/webrtc/RtpSender.java",
281 "android/java/src/org/webrtc/SdpObserver.java",
282 "android/java/src/org/webrtc/SessionDescription.java",
283 "android/java/src/org/webrtc/StatsObserver.java",
284 "android/java/src/org/webrtc/StatsReport.java",
285 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
286 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
287 "android/java/src/org/webrtc/VideoCapturer.java",
288 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
289 "android/java/src/org/webrtc/VideoRenderer.java",
290 "android/java/src/org/webrtc/VideoRendererGui.java",
291 "android/java/src/org/webrtc/VideoSource.java",
292 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200293 ]
294
295 deps = [
296 "//webrtc/base:base_java",
297 ]
298 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700299}
300
301if (rtc_include_tests) {
302 config("peerconnection_unittests_config") {
303 # The warnings below are enabled by default. Since GN orders compiler flags
304 # for a target before flags from configs, the only way to disable such
305 # warnings is by having them in a separate config, loaded from the target.
306 # TODO(kjellander): Make the code compile without disabling these flags.
307 # See https://bugs.webrtc.org/3307.
308 if (is_clang && is_win) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700309 cflags = [
310 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
311 # for -Wno-sign-compare
312 "-Wno-sign-compare",
313 "-Wno-unused-function",
314 ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700315 }
316
317 if (!is_win) {
318 cflags = [ "-Wno-sign-compare" ]
319 cflags_cc = [ "-Wno-overloaded-virtual" ]
320 }
321 }
322
ehmaldonado38a21322016-09-02 04:10:34 -0700323 rtc_test("peerconnection_unittests") {
kjellanderfd5b4e92016-06-13 12:08:33 -0700324 testonly = true
325 sources = [
326 "datachannel_unittest.cc",
327 "dtmfsender_unittest.cc",
328 "fakemetricsobserver.cc",
329 "fakemetricsobserver.h",
330 "jsepsessiondescription_unittest.cc",
331 "localaudiosource_unittest.cc",
332 "mediaconstraintsinterface_unittest.cc",
333 "mediastream_unittest.cc",
334 "peerconnection_unittest.cc",
335 "peerconnectionendtoend_unittest.cc",
336 "peerconnectionfactory_unittest.cc",
337 "peerconnectioninterface_unittest.cc",
338 "proxy_unittest.cc",
339 "rtpsenderreceiver_unittest.cc",
340 "statscollector_unittest.cc",
341 "test/fakeaudiocapturemodule.cc",
342 "test/fakeaudiocapturemodule.h",
343 "test/fakeaudiocapturemodule_unittest.cc",
344 "test/fakeconstraints.h",
345 "test/fakedatachannelprovider.h",
346 "test/fakeperiodicvideocapturer.h",
347 "test/fakertccertificategenerator.h",
348 "test/fakevideotrackrenderer.h",
hbosd565b732016-08-30 14:04:35 -0700349 "test/mock_datachannel.h",
hbosb24b1ce2016-08-16 01:19:43 -0700350 "test/mock_peerconnection.h",
351 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700352 "test/mockpeerconnectionobservers.h",
353 "test/peerconnectiontestwrapper.cc",
354 "test/peerconnectiontestwrapper.h",
355 "test/testsdpstrings.h",
356 "videocapturertracksource_unittest.cc",
357 "videotrack_unittest.cc",
358 "webrtcsdp_unittest.cc",
359 "webrtcsession_unittest.cc",
360 ]
361
362 defines = [ "HAVE_SCTP" ]
363
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700364 configs += [ ":peerconnection_unittests_config" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700365
366 if (is_clang) {
367 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700368 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700369 }
370
371 # TODO(jschuh): Bug 1348: fix this warning.
372 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
373
374 if (is_win) {
375 cflags = [
376 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
377 "/wd4389", # signed/unsigned mismatch.
378 ]
379 }
380
381 if (rtc_use_quic) {
382 public_deps = [
383 "//third_party/libquic",
384 ]
385 sources += [
386 "quicdatachannel_unittest.cc",
387 "quicdatatransport_unittest.cc",
388 ]
389 }
390
391 deps = []
392 if (is_android) {
393 sources += [
394 "test/androidtestinitializer.cc",
395 "test/androidtestinitializer.h",
396 ]
397 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700398 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700399 ":libjingle_peerconnection_jni",
400 "//testing/android/native_test:native_test_support",
401 ]
402 }
403
404 deps += [
405 ":libjingle_peerconnection",
406 "..:webrtc_common",
407 "../base:rtc_base_tests_utils",
408 "../media:rtc_unittest_main",
409 "../pc:rtc_pc",
410 "../system_wrappers:metrics_default",
411 "//testing/gmock",
412 ]
413
414 if (is_android) {
415 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700416
417 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700418 }
419 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700420
421 if (is_android) {
422 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
423 apk_name = "libjingle_peerconnection_android_unittest"
424 android_manifest = "androidtests/AndroidManifest.xml"
425
426 java_files = [
427 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
428 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
429 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
430 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
431 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
432 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
433 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
434 "androidtests/src/org/webrtc/PeerConnectionTest.java",
435 "androidtests/src/org/webrtc/RendererCommonTest.java",
436 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
437 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
438 ]
439
440 deps = [
441 ":libjingle_peerconnection_android_unittest_resources",
442 ":libjingle_peerconnection_java",
443 "//base:base_java",
444 "//webrtc/base:base_java",
445 ]
446
447 shared_libraries = [ ":libjingle_peerconnection_so" ]
448 }
449
450 android_resources("libjingle_peerconnection_android_unittest_resources") {
451 resource_dirs = [ "androidtests/res" ]
452 custom_package = "org.webrtc"
453 }
454 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700455}