blob: 176df9e30542c00a94313b9dc46125797efd7ed9 [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
29 configs += [ "..:common_config" ]
30 public_configs = [ "..:common_inherited_config" ]
31
32 deps = [
33 # TODO(kjellander): Add remaining dependencies when webrtc:4243 is done.
34 "..:webrtc_common",
35 "../base:rtc_base_approved",
36 "../modules/audio_coding:audio_encoder_interface",
37 ]
38}
39
kjellanderc76dc952016-06-03 03:09:32 -070040config("libjingle_peerconnection_warnings_config") {
41 # GN orders flags on a target before flags from configs. The default config
42 # adds these flags so to cancel them out they need to come from a config and
43 # cannot be on the target directly.
kjellander3e33bfe2016-06-20 07:04:09 -070044 if (!is_win && !is_clang) {
45 cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
kjellanderc76dc952016-06-03 03:09:32 -070046 }
47}
48
ehmaldonado38a21322016-09-02 04:10:34 -070049rtc_source_set("libjingle_peerconnection") {
kjellanderc76dc952016-06-03 03:09:32 -070050 cflags = []
51 sources = [
52 "audiotrack.cc",
53 "audiotrack.h",
54 "datachannel.cc",
55 "datachannel.h",
56 "datachannelinterface.h",
kjellanderc76dc952016-06-03 03:09:32 -070057 "dtmfsender.cc",
58 "dtmfsender.h",
59 "dtmfsenderinterface.h",
60 "jsep.h",
61 "jsepicecandidate.cc",
62 "jsepicecandidate.h",
63 "jsepsessiondescription.cc",
64 "jsepsessiondescription.h",
65 "localaudiosource.cc",
66 "localaudiosource.h",
67 "mediaconstraintsinterface.cc",
68 "mediaconstraintsinterface.h",
69 "mediacontroller.cc",
70 "mediacontroller.h",
71 "mediastream.cc",
72 "mediastream.h",
73 "mediastreaminterface.h",
74 "mediastreamobserver.cc",
75 "mediastreamobserver.h",
kjellanderc76dc952016-06-03 03:09:32 -070076 "mediastreamproxy.h",
77 "mediastreamtrack.h",
78 "mediastreamtrackproxy.h",
79 "notifier.h",
80 "peerconnection.cc",
81 "peerconnection.h",
82 "peerconnectionfactory.cc",
83 "peerconnectionfactory.h",
84 "peerconnectionfactoryproxy.h",
85 "peerconnectioninterface.h",
86 "peerconnectionproxy.h",
87 "proxy.h",
88 "remoteaudiosource.cc",
89 "remoteaudiosource.h",
hbos615d3012016-08-24 01:33:13 -070090 "rtcstats.h",
hbosd565b732016-08-30 14:04:35 -070091 "rtcstats_objects.h",
hbos615d3012016-08-24 01:33:13 -070092 "rtcstatsreport.h",
kjellanderc76dc952016-06-03 03:09:32 -070093 "rtpparameters.h",
94 "rtpreceiver.cc",
95 "rtpreceiver.h",
96 "rtpreceiverinterface.h",
97 "rtpsender.cc",
98 "rtpsender.h",
99 "rtpsenderinterface.h",
100 "sctputils.cc",
101 "sctputils.h",
102 "statscollector.cc",
103 "statscollector.h",
104 "statstypes.cc",
105 "statstypes.h",
106 "streamcollection.h",
107 "videocapturertracksource.cc",
108 "videocapturertracksource.h",
109 "videosourceproxy.h",
110 "videotrack.cc",
111 "videotrack.h",
112 "videotracksource.cc",
113 "videotracksource.h",
114 "webrtcsdp.cc",
115 "webrtcsdp.h",
116 "webrtcsession.cc",
117 "webrtcsession.h",
118 "webrtcsessiondescriptionfactory.cc",
119 "webrtcsessiondescriptionfactory.h",
120 ]
121
122 configs += [
123 "..:common_config",
124 ":libjingle_peerconnection_warnings_config",
125 ]
126 public_configs = [ "..:common_inherited_config" ]
127
128 if (is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700129 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700130 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderc76dc952016-06-03 03:09:32 -0700131 }
132
kjellanderc76dc952016-06-03 03:09:32 -0700133 deps = [
kjellandera69d9732016-08-31 07:33:05 -0700134 ":call_api",
katrielc14897d02016-06-03 13:14:28 -0700135 "../call",
kjellanderc76dc952016-06-03 03:09:32 -0700136 "../media",
137 "../pc",
138 ]
139
140 if (rtc_use_quic) {
141 sources += [
142 "quicdatachannel.cc",
143 "quicdatachannel.h",
144 "quicdatatransport.cc",
145 "quicdatatransport.h",
146 ]
147 deps += [ "//third_party/libquic" ]
148 public_deps = [
149 "//third_party/libquic",
150 ]
151 }
152}
kjellanderfd5b4e92016-06-13 12:08:33 -0700153
kjellander69b34622016-06-21 01:05:16 -0700154# Exclude the targets below from the Chromium build since they cannot be built
155# due to incompability with Chromium's logging implementation.
156if (is_android && !build_with_chromium) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700157 config("libjingle_peerconnection_jni_warnings_config") {
158 # The warnings below are enabled by default. Since GN orders compiler flags
159 # for a target before flags from configs, the only way to disable such
160 # warnings is by having them in a separate config, loaded from the target.
161 if (!is_win) {
162 cflags = [
163 "-Wno-sign-compare",
164 "-Wno-unused-variable",
165 ]
166 }
167 }
168
ehmaldonado38a21322016-09-02 04:10:34 -0700169 rtc_source_set("libjingle_peerconnection_jni") {
kjellanderfd5b4e92016-06-13 12:08:33 -0700170 sources = [
sakald34a7112016-07-01 05:10:51 -0700171 "android/jni/androidmediacodeccommon.h",
172 "android/jni/androidmediadecoder_jni.cc",
173 "android/jni/androidmediadecoder_jni.h",
174 "android/jni/androidmediaencoder_jni.cc",
175 "android/jni/androidmediaencoder_jni.h",
176 "android/jni/androidmetrics_jni.cc",
177 "android/jni/androidnetworkmonitor_jni.cc",
178 "android/jni/androidnetworkmonitor_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200179 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700180 "android/jni/classreferenceholder.cc",
181 "android/jni/classreferenceholder.h",
182 "android/jni/jni_helpers.cc",
183 "android/jni/jni_helpers.h",
184 "android/jni/native_handle_impl.cc",
185 "android/jni/native_handle_impl.h",
186 "android/jni/peerconnection_jni.cc",
187 "android/jni/surfacetexturehelper_jni.cc",
188 "android/jni/surfacetexturehelper_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200189 "androidvideotracksource.cc",
190 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700191 ]
192
193 configs += [
194 "..:common_config",
195 ":libjingle_peerconnection_jni_warnings_config",
196 ]
197 public_configs = [ "..:common_inherited_config" ]
198
199 if (is_clang) {
200 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700201 suppressed_configs += [
kjellanderfd5b4e92016-06-13 12:08:33 -0700202 "//build/config/clang:extra_warnings",
203 "//build/config/clang:find_bad_constructs",
204 ]
205 }
206
207 # TODO(jschuh): Bug 1348: fix this warning.
208 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
209
210 if (is_win) {
211 cflags += [
212 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
213 "/wd4389", # signed/unsigned mismatch.
214 ]
215 }
216
217 deps = [
218 ":libjingle_peerconnection",
sakal86ccd7b2016-08-22 00:26:01 -0700219 "../system_wrappers:field_trial_default",
kjellanderfd5b4e92016-06-13 12:08:33 -0700220 "../system_wrappers:metrics_default",
221 ]
222
223 if (rtc_build_libyuv) {
224 deps += [ "$rtc_libyuv_dir" ]
225 public_deps = [
226 "$rtc_libyuv_dir",
227 ]
228 } else {
229 # Need to add a directory normally exported by libyuv.
230 include_dirs += [ "$rtc_libyuv_dir/include" ]
231 }
232 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200233
234 shared_library("libjingle_peerconnection_so") {
235 sources = [
sakald34a7112016-07-01 05:10:51 -0700236 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200237 ]
238
239 configs -= [ "//build/config/android:hide_native_jni_exports" ]
240
241 deps = [
242 ":libjingle_peerconnection",
243 ":libjingle_peerconnection_jni",
244 ]
sakala53fa0a2016-08-24 00:48:21 -0700245 output_extension = "so"
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200246 }
247
248 android_library("libjingle_peerconnection_java") {
249 java_files = [
250 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
251 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
252 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
253 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
254 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
255 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700256 "android/java/src/org/webrtc/AudioSource.java",
257 "android/java/src/org/webrtc/AudioTrack.java",
258 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
259 "android/java/src/org/webrtc/Camera1Enumerator.java",
260 "android/java/src/org/webrtc/Camera2Capturer.java",
261 "android/java/src/org/webrtc/Camera2Enumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700262 "android/java/src/org/webrtc/Camera2Session.java",
263 "android/java/src/org/webrtc/CameraCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700264 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
265 "android/java/src/org/webrtc/CameraEnumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700266 "android/java/src/org/webrtc/CameraSession.java",
sakald34a7112016-07-01 05:10:51 -0700267 "android/java/src/org/webrtc/CameraVideoCapturer.java",
268 "android/java/src/org/webrtc/DataChannel.java",
269 "android/java/src/org/webrtc/EglBase.java",
270 "android/java/src/org/webrtc/EglBase10.java",
271 "android/java/src/org/webrtc/EglBase14.java",
272 "android/java/src/org/webrtc/GlRectDrawer.java",
273 "android/java/src/org/webrtc/GlShader.java",
274 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
275 "android/java/src/org/webrtc/GlUtil.java",
276 "android/java/src/org/webrtc/IceCandidate.java",
277 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
278 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
279 "android/java/src/org/webrtc/MediaConstraints.java",
280 "android/java/src/org/webrtc/MediaSource.java",
281 "android/java/src/org/webrtc/MediaStream.java",
282 "android/java/src/org/webrtc/MediaStreamTrack.java",
283 "android/java/src/org/webrtc/Metrics.java",
284 "android/java/src/org/webrtc/NetworkMonitor.java",
285 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
286 "android/java/src/org/webrtc/PeerConnection.java",
287 "android/java/src/org/webrtc/PeerConnectionFactory.java",
288 "android/java/src/org/webrtc/RendererCommon.java",
289 "android/java/src/org/webrtc/RtpParameters.java",
290 "android/java/src/org/webrtc/RtpReceiver.java",
291 "android/java/src/org/webrtc/RtpSender.java",
292 "android/java/src/org/webrtc/SdpObserver.java",
293 "android/java/src/org/webrtc/SessionDescription.java",
294 "android/java/src/org/webrtc/StatsObserver.java",
295 "android/java/src/org/webrtc/StatsReport.java",
296 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
297 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
298 "android/java/src/org/webrtc/VideoCapturer.java",
299 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
300 "android/java/src/org/webrtc/VideoRenderer.java",
301 "android/java/src/org/webrtc/VideoRendererGui.java",
302 "android/java/src/org/webrtc/VideoSource.java",
303 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200304 ]
305
306 deps = [
307 "//webrtc/base:base_java",
308 ]
309 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700310}
311
312if (rtc_include_tests) {
313 config("peerconnection_unittests_config") {
314 # The warnings below are enabled by default. Since GN orders compiler flags
315 # for a target before flags from configs, the only way to disable such
316 # warnings is by having them in a separate config, loaded from the target.
317 # TODO(kjellander): Make the code compile without disabling these flags.
318 # See https://bugs.webrtc.org/3307.
319 if (is_clang && is_win) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700320 cflags = [
321 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
322 # for -Wno-sign-compare
323 "-Wno-sign-compare",
324 "-Wno-unused-function",
325 ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700326 }
327
328 if (!is_win) {
329 cflags = [ "-Wno-sign-compare" ]
330 cflags_cc = [ "-Wno-overloaded-virtual" ]
331 }
332 }
333
ehmaldonado38a21322016-09-02 04:10:34 -0700334 rtc_test("peerconnection_unittests") {
kjellanderfd5b4e92016-06-13 12:08:33 -0700335 testonly = true
336 sources = [
337 "datachannel_unittest.cc",
338 "dtmfsender_unittest.cc",
339 "fakemetricsobserver.cc",
340 "fakemetricsobserver.h",
341 "jsepsessiondescription_unittest.cc",
342 "localaudiosource_unittest.cc",
343 "mediaconstraintsinterface_unittest.cc",
344 "mediastream_unittest.cc",
345 "peerconnection_unittest.cc",
346 "peerconnectionendtoend_unittest.cc",
347 "peerconnectionfactory_unittest.cc",
348 "peerconnectioninterface_unittest.cc",
349 "proxy_unittest.cc",
350 "rtpsenderreceiver_unittest.cc",
351 "statscollector_unittest.cc",
352 "test/fakeaudiocapturemodule.cc",
353 "test/fakeaudiocapturemodule.h",
354 "test/fakeaudiocapturemodule_unittest.cc",
355 "test/fakeconstraints.h",
356 "test/fakedatachannelprovider.h",
357 "test/fakeperiodicvideocapturer.h",
358 "test/fakertccertificategenerator.h",
359 "test/fakevideotrackrenderer.h",
hbosd565b732016-08-30 14:04:35 -0700360 "test/mock_datachannel.h",
hbosb24b1ce2016-08-16 01:19:43 -0700361 "test/mock_peerconnection.h",
362 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700363 "test/mockpeerconnectionobservers.h",
364 "test/peerconnectiontestwrapper.cc",
365 "test/peerconnectiontestwrapper.h",
366 "test/testsdpstrings.h",
367 "videocapturertracksource_unittest.cc",
368 "videotrack_unittest.cc",
369 "webrtcsdp_unittest.cc",
370 "webrtcsession_unittest.cc",
371 ]
372
373 defines = [ "HAVE_SCTP" ]
374
375 configs += [
376 "..:common_config",
377 ":peerconnection_unittests_config",
378 ]
379 public_configs = [ "..:common_inherited_config" ]
380
381 if (is_clang) {
382 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700383 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700384 }
385
386 # TODO(jschuh): Bug 1348: fix this warning.
387 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
388
389 if (is_win) {
390 cflags = [
391 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
392 "/wd4389", # signed/unsigned mismatch.
393 ]
394 }
395
396 if (rtc_use_quic) {
397 public_deps = [
398 "//third_party/libquic",
399 ]
400 sources += [
401 "quicdatachannel_unittest.cc",
402 "quicdatatransport_unittest.cc",
403 ]
404 }
405
406 deps = []
407 if (is_android) {
408 sources += [
409 "test/androidtestinitializer.cc",
410 "test/androidtestinitializer.h",
411 ]
412 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700413 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700414 ":libjingle_peerconnection_jni",
415 "//testing/android/native_test:native_test_support",
416 ]
417 }
418
419 deps += [
420 ":libjingle_peerconnection",
421 "..:webrtc_common",
422 "../base:rtc_base_tests_utils",
423 "../media:rtc_unittest_main",
424 "../pc:rtc_pc",
425 "../system_wrappers:metrics_default",
426 "//testing/gmock",
427 ]
428
429 if (is_android) {
430 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700431
432 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700433 }
434 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700435
436 if (is_android) {
437 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
438 apk_name = "libjingle_peerconnection_android_unittest"
439 android_manifest = "androidtests/AndroidManifest.xml"
440
441 java_files = [
442 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
443 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
444 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
445 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
446 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
447 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
448 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
449 "androidtests/src/org/webrtc/PeerConnectionTest.java",
450 "androidtests/src/org/webrtc/RendererCommonTest.java",
451 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
452 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
453 ]
454
455 deps = [
456 ":libjingle_peerconnection_android_unittest_resources",
457 ":libjingle_peerconnection_java",
458 "//base:base_java",
459 "//webrtc/base:base_java",
460 ]
461
462 shared_libraries = [ ":libjingle_peerconnection_so" ]
463 }
464
465 android_resources("libjingle_peerconnection_android_unittest_resources") {
466 resource_dirs = [ "androidtests/res" ]
467 custom_package = "org.webrtc"
468 }
469 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700470}