blob: fba49efd296c14d1e37e4bdef17426f9e3828fee [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 public_configs = [ "..:common_inherited_config" ]
30
31 deps = [
32 # TODO(kjellander): Add remaining dependencies when webrtc:4243 is done.
33 "..:webrtc_common",
34 "../base:rtc_base_approved",
35 "../modules/audio_coding:audio_encoder_interface",
36 ]
37}
38
kjellanderc76dc952016-06-03 03:09:32 -070039config("libjingle_peerconnection_warnings_config") {
40 # GN orders flags on a target before flags from configs. The default config
41 # adds these flags so to cancel them out they need to come from a config and
42 # cannot be on the target directly.
kjellander3e33bfe2016-06-20 07:04:09 -070043 if (!is_win && !is_clang) {
44 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
kjellanderc76dc952016-06-03 03:09:32 -070045 }
46}
47
ehmaldonado38a21322016-09-02 04:10:34 -070048rtc_source_set("libjingle_peerconnection") {
kjellanderc76dc952016-06-03 03:09:32 -070049 cflags = []
50 sources = [
51 "audiotrack.cc",
52 "audiotrack.h",
53 "datachannel.cc",
54 "datachannel.h",
55 "datachannelinterface.h",
kjellanderc76dc952016-06-03 03:09:32 -070056 "dtmfsender.cc",
57 "dtmfsender.h",
58 "dtmfsenderinterface.h",
59 "jsep.h",
60 "jsepicecandidate.cc",
61 "jsepicecandidate.h",
62 "jsepsessiondescription.cc",
63 "jsepsessiondescription.h",
64 "localaudiosource.cc",
65 "localaudiosource.h",
66 "mediaconstraintsinterface.cc",
67 "mediaconstraintsinterface.h",
68 "mediacontroller.cc",
69 "mediacontroller.h",
70 "mediastream.cc",
71 "mediastream.h",
72 "mediastreaminterface.h",
73 "mediastreamobserver.cc",
74 "mediastreamobserver.h",
kjellanderc76dc952016-06-03 03:09:32 -070075 "mediastreamproxy.h",
76 "mediastreamtrack.h",
77 "mediastreamtrackproxy.h",
78 "notifier.h",
79 "peerconnection.cc",
80 "peerconnection.h",
81 "peerconnectionfactory.cc",
82 "peerconnectionfactory.h",
83 "peerconnectionfactoryproxy.h",
84 "peerconnectioninterface.h",
85 "peerconnectionproxy.h",
86 "proxy.h",
87 "remoteaudiosource.cc",
88 "remoteaudiosource.h",
hbos615d3012016-08-24 01:33:13 -070089 "rtcstats.h",
hbosd565b732016-08-30 14:04:35 -070090 "rtcstats_objects.h",
hbos615d3012016-08-24 01:33:13 -070091 "rtcstatsreport.h",
kjellanderc76dc952016-06-03 03:09:32 -070092 "rtpparameters.h",
93 "rtpreceiver.cc",
94 "rtpreceiver.h",
95 "rtpreceiverinterface.h",
96 "rtpsender.cc",
97 "rtpsender.h",
98 "rtpsenderinterface.h",
99 "sctputils.cc",
100 "sctputils.h",
101 "statscollector.cc",
102 "statscollector.h",
103 "statstypes.cc",
104 "statstypes.h",
105 "streamcollection.h",
106 "videocapturertracksource.cc",
107 "videocapturertracksource.h",
108 "videosourceproxy.h",
109 "videotrack.cc",
110 "videotrack.h",
111 "videotracksource.cc",
112 "videotracksource.h",
113 "webrtcsdp.cc",
114 "webrtcsdp.h",
115 "webrtcsession.cc",
116 "webrtcsession.h",
117 "webrtcsessiondescriptionfactory.cc",
118 "webrtcsessiondescriptionfactory.h",
119 ]
120
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700121 configs += [ ":libjingle_peerconnection_warnings_config" ]
kjellanderc76dc952016-06-03 03:09:32 -0700122 public_configs = [ "..:common_inherited_config" ]
123
124 if (is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700125 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700126 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderc76dc952016-06-03 03:09:32 -0700127 }
128
kjellanderc76dc952016-06-03 03:09:32 -0700129 deps = [
kjellandera69d9732016-08-31 07:33:05 -0700130 ":call_api",
katrielc14897d02016-06-03 13:14:28 -0700131 "../call",
kjellanderc76dc952016-06-03 03:09:32 -0700132 "../media",
133 "../pc",
134 ]
135
136 if (rtc_use_quic) {
137 sources += [
138 "quicdatachannel.cc",
139 "quicdatachannel.h",
140 "quicdatatransport.cc",
141 "quicdatatransport.h",
142 ]
143 deps += [ "//third_party/libquic" ]
144 public_deps = [
145 "//third_party/libquic",
146 ]
147 }
148}
kjellanderfd5b4e92016-06-13 12:08:33 -0700149
kjellander69b34622016-06-21 01:05:16 -0700150# Exclude the targets below from the Chromium build since they cannot be built
151# due to incompability with Chromium's logging implementation.
152if (is_android && !build_with_chromium) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700153 config("libjingle_peerconnection_jni_warnings_config") {
154 # The warnings below are enabled by default. Since GN orders compiler flags
155 # for a target before flags from configs, the only way to disable such
156 # warnings is by having them in a separate config, loaded from the target.
157 if (!is_win) {
158 cflags = [
159 "-Wno-sign-compare",
160 "-Wno-unused-variable",
161 ]
162 }
163 }
164
ehmaldonado38a21322016-09-02 04:10:34 -0700165 rtc_source_set("libjingle_peerconnection_jni") {
kjellanderfd5b4e92016-06-13 12:08:33 -0700166 sources = [
sakald34a7112016-07-01 05:10:51 -0700167 "android/jni/androidmediacodeccommon.h",
168 "android/jni/androidmediadecoder_jni.cc",
169 "android/jni/androidmediadecoder_jni.h",
170 "android/jni/androidmediaencoder_jni.cc",
171 "android/jni/androidmediaencoder_jni.h",
172 "android/jni/androidmetrics_jni.cc",
173 "android/jni/androidnetworkmonitor_jni.cc",
174 "android/jni/androidnetworkmonitor_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200175 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700176 "android/jni/classreferenceholder.cc",
177 "android/jni/classreferenceholder.h",
178 "android/jni/jni_helpers.cc",
179 "android/jni/jni_helpers.h",
180 "android/jni/native_handle_impl.cc",
181 "android/jni/native_handle_impl.h",
182 "android/jni/peerconnection_jni.cc",
183 "android/jni/surfacetexturehelper_jni.cc",
184 "android/jni/surfacetexturehelper_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200185 "androidvideotracksource.cc",
186 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700187 ]
188
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700189 configs += [ ":libjingle_peerconnection_jni_warnings_config" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700190 public_configs = [ "..:common_inherited_config" ]
191
192 if (is_clang) {
193 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700194 suppressed_configs += [
kjellanderfd5b4e92016-06-13 12:08:33 -0700195 "//build/config/clang:extra_warnings",
196 "//build/config/clang:find_bad_constructs",
197 ]
198 }
199
200 # TODO(jschuh): Bug 1348: fix this warning.
201 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
202
203 if (is_win) {
204 cflags += [
205 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
206 "/wd4389", # signed/unsigned mismatch.
207 ]
208 }
209
210 deps = [
211 ":libjingle_peerconnection",
sakal86ccd7b2016-08-22 00:26:01 -0700212 "../system_wrappers:field_trial_default",
kjellanderfd5b4e92016-06-13 12:08:33 -0700213 "../system_wrappers:metrics_default",
214 ]
215
216 if (rtc_build_libyuv) {
217 deps += [ "$rtc_libyuv_dir" ]
218 public_deps = [
219 "$rtc_libyuv_dir",
220 ]
221 } else {
222 # Need to add a directory normally exported by libyuv.
223 include_dirs += [ "$rtc_libyuv_dir/include" ]
224 }
225 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200226
227 shared_library("libjingle_peerconnection_so") {
228 sources = [
sakald34a7112016-07-01 05:10:51 -0700229 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200230 ]
231
232 configs -= [ "//build/config/android:hide_native_jni_exports" ]
233
234 deps = [
235 ":libjingle_peerconnection",
236 ":libjingle_peerconnection_jni",
237 ]
sakala53fa0a2016-08-24 00:48:21 -0700238 output_extension = "so"
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200239 }
240
241 android_library("libjingle_peerconnection_java") {
242 java_files = [
243 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
244 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
245 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
246 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
247 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
248 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700249 "android/java/src/org/webrtc/AudioSource.java",
250 "android/java/src/org/webrtc/AudioTrack.java",
251 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
252 "android/java/src/org/webrtc/Camera1Enumerator.java",
253 "android/java/src/org/webrtc/Camera2Capturer.java",
254 "android/java/src/org/webrtc/Camera2Enumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700255 "android/java/src/org/webrtc/Camera2Session.java",
256 "android/java/src/org/webrtc/CameraCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700257 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
258 "android/java/src/org/webrtc/CameraEnumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700259 "android/java/src/org/webrtc/CameraSession.java",
sakald34a7112016-07-01 05:10:51 -0700260 "android/java/src/org/webrtc/CameraVideoCapturer.java",
261 "android/java/src/org/webrtc/DataChannel.java",
262 "android/java/src/org/webrtc/EglBase.java",
263 "android/java/src/org/webrtc/EglBase10.java",
264 "android/java/src/org/webrtc/EglBase14.java",
265 "android/java/src/org/webrtc/GlRectDrawer.java",
266 "android/java/src/org/webrtc/GlShader.java",
267 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
268 "android/java/src/org/webrtc/GlUtil.java",
269 "android/java/src/org/webrtc/IceCandidate.java",
270 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
271 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
272 "android/java/src/org/webrtc/MediaConstraints.java",
273 "android/java/src/org/webrtc/MediaSource.java",
274 "android/java/src/org/webrtc/MediaStream.java",
275 "android/java/src/org/webrtc/MediaStreamTrack.java",
276 "android/java/src/org/webrtc/Metrics.java",
277 "android/java/src/org/webrtc/NetworkMonitor.java",
278 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
279 "android/java/src/org/webrtc/PeerConnection.java",
280 "android/java/src/org/webrtc/PeerConnectionFactory.java",
281 "android/java/src/org/webrtc/RendererCommon.java",
282 "android/java/src/org/webrtc/RtpParameters.java",
283 "android/java/src/org/webrtc/RtpReceiver.java",
284 "android/java/src/org/webrtc/RtpSender.java",
285 "android/java/src/org/webrtc/SdpObserver.java",
286 "android/java/src/org/webrtc/SessionDescription.java",
287 "android/java/src/org/webrtc/StatsObserver.java",
288 "android/java/src/org/webrtc/StatsReport.java",
289 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
290 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
291 "android/java/src/org/webrtc/VideoCapturer.java",
292 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
293 "android/java/src/org/webrtc/VideoRenderer.java",
294 "android/java/src/org/webrtc/VideoRendererGui.java",
295 "android/java/src/org/webrtc/VideoSource.java",
296 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200297 ]
298
299 deps = [
300 "//webrtc/base:base_java",
301 ]
302 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700303}
304
305if (rtc_include_tests) {
306 config("peerconnection_unittests_config") {
307 # The warnings below are enabled by default. Since GN orders compiler flags
308 # for a target before flags from configs, the only way to disable such
309 # warnings is by having them in a separate config, loaded from the target.
310 # TODO(kjellander): Make the code compile without disabling these flags.
311 # See https://bugs.webrtc.org/3307.
312 if (is_clang && is_win) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700313 cflags = [
314 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
315 # for -Wno-sign-compare
316 "-Wno-sign-compare",
317 "-Wno-unused-function",
318 ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700319 }
320
321 if (!is_win) {
322 cflags = [ "-Wno-sign-compare" ]
323 cflags_cc = [ "-Wno-overloaded-virtual" ]
324 }
325 }
326
ehmaldonado38a21322016-09-02 04:10:34 -0700327 rtc_test("peerconnection_unittests") {
kjellanderfd5b4e92016-06-13 12:08:33 -0700328 testonly = true
329 sources = [
330 "datachannel_unittest.cc",
331 "dtmfsender_unittest.cc",
332 "fakemetricsobserver.cc",
333 "fakemetricsobserver.h",
334 "jsepsessiondescription_unittest.cc",
335 "localaudiosource_unittest.cc",
336 "mediaconstraintsinterface_unittest.cc",
337 "mediastream_unittest.cc",
338 "peerconnection_unittest.cc",
339 "peerconnectionendtoend_unittest.cc",
340 "peerconnectionfactory_unittest.cc",
341 "peerconnectioninterface_unittest.cc",
342 "proxy_unittest.cc",
343 "rtpsenderreceiver_unittest.cc",
344 "statscollector_unittest.cc",
345 "test/fakeaudiocapturemodule.cc",
346 "test/fakeaudiocapturemodule.h",
347 "test/fakeaudiocapturemodule_unittest.cc",
348 "test/fakeconstraints.h",
349 "test/fakedatachannelprovider.h",
350 "test/fakeperiodicvideocapturer.h",
351 "test/fakertccertificategenerator.h",
352 "test/fakevideotrackrenderer.h",
hbosd565b732016-08-30 14:04:35 -0700353 "test/mock_datachannel.h",
hbosb24b1ce2016-08-16 01:19:43 -0700354 "test/mock_peerconnection.h",
355 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700356 "test/mockpeerconnectionobservers.h",
357 "test/peerconnectiontestwrapper.cc",
358 "test/peerconnectiontestwrapper.h",
359 "test/testsdpstrings.h",
360 "videocapturertracksource_unittest.cc",
361 "videotrack_unittest.cc",
362 "webrtcsdp_unittest.cc",
363 "webrtcsession_unittest.cc",
364 ]
365
366 defines = [ "HAVE_SCTP" ]
367
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700368 configs += [ ":peerconnection_unittests_config" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700369 public_configs = [ "..:common_inherited_config" ]
370
371 if (is_clang) {
372 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700373 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700374 }
375
376 # TODO(jschuh): Bug 1348: fix this warning.
377 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
378
379 if (is_win) {
380 cflags = [
381 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
382 "/wd4389", # signed/unsigned mismatch.
383 ]
384 }
385
386 if (rtc_use_quic) {
387 public_deps = [
388 "//third_party/libquic",
389 ]
390 sources += [
391 "quicdatachannel_unittest.cc",
392 "quicdatatransport_unittest.cc",
393 ]
394 }
395
396 deps = []
397 if (is_android) {
398 sources += [
399 "test/androidtestinitializer.cc",
400 "test/androidtestinitializer.h",
401 ]
402 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700403 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700404 ":libjingle_peerconnection_jni",
405 "//testing/android/native_test:native_test_support",
406 ]
407 }
408
409 deps += [
410 ":libjingle_peerconnection",
411 "..:webrtc_common",
412 "../base:rtc_base_tests_utils",
413 "../media:rtc_unittest_main",
414 "../pc:rtc_pc",
415 "../system_wrappers:metrics_default",
416 "//testing/gmock",
417 ]
418
419 if (is_android) {
420 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700421
422 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700423 }
424 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700425
426 if (is_android) {
427 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
428 apk_name = "libjingle_peerconnection_android_unittest"
429 android_manifest = "androidtests/AndroidManifest.xml"
430
431 java_files = [
432 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
433 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
434 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
435 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
436 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
437 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
438 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
439 "androidtests/src/org/webrtc/PeerConnectionTest.java",
440 "androidtests/src/org/webrtc/RendererCommonTest.java",
441 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
442 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
443 ]
444
445 deps = [
446 ":libjingle_peerconnection_android_unittest_resources",
447 ":libjingle_peerconnection_java",
448 "//base:base_java",
449 "//webrtc/base:base_java",
450 ]
451
452 shared_libraries = [ ":libjingle_peerconnection_so" ]
453 }
454
455 android_resources("libjingle_peerconnection_android_unittest_resources") {
456 resource_dirs = [ "androidtests/res" ]
457 custom_package = "org.webrtc"
458 }
459 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700460}