blob: 298c069c7f1f51b088e0ece8450b8a70626bc5cd [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") {
kjellander705ecc52016-09-15 00:53:26 -070016 public_deps = [
kjellanderc76dc952016-06-03 03:09:32 -070017 ":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
kjellanderb62dbbe2016-09-23 00:38:52 -070046rtc_static_library("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",
hbos74e1a4f2016-09-15 23:33:01 -070087 "rtcstatscollector.cc",
88 "rtcstatscollector.h",
kjellanderc76dc952016-06-03 03:09:32 -070089 "rtpparameters.h",
90 "rtpreceiver.cc",
91 "rtpreceiver.h",
92 "rtpreceiverinterface.h",
93 "rtpsender.cc",
94 "rtpsender.h",
95 "rtpsenderinterface.h",
96 "sctputils.cc",
97 "sctputils.h",
98 "statscollector.cc",
99 "statscollector.h",
100 "statstypes.cc",
101 "statstypes.h",
102 "streamcollection.h",
103 "videocapturertracksource.cc",
104 "videocapturertracksource.h",
105 "videosourceproxy.h",
106 "videotrack.cc",
107 "videotrack.h",
108 "videotracksource.cc",
109 "videotracksource.h",
110 "webrtcsdp.cc",
111 "webrtcsdp.h",
112 "webrtcsession.cc",
113 "webrtcsession.h",
114 "webrtcsessiondescriptionfactory.cc",
115 "webrtcsessiondescriptionfactory.h",
116 ]
117
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700118 configs += [ ":libjingle_peerconnection_warnings_config" ]
kjellanderc76dc952016-06-03 03:09:32 -0700119
kjellandere40a7ee2016-10-16 23:56:12 -0700120 if (!build_with_chromium && is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700121 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700122 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderc76dc952016-06-03 03:09:32 -0700123 }
124
kjellanderc76dc952016-06-03 03:09:32 -0700125 deps = [
kjellandera69d9732016-08-31 07:33:05 -0700126 ":call_api",
hbos74e1a4f2016-09-15 23:33:01 -0700127 ":rtc_stats_api",
katrielc14897d02016-06-03 13:14:28 -0700128 "../call",
kjellanderc76dc952016-06-03 03:09:32 -0700129 "../media",
130 "../pc",
hbos74e1a4f2016-09-15 23:33:01 -0700131 "../stats",
kjellanderc76dc952016-06-03 03:09:32 -0700132 ]
133
134 if (rtc_use_quic) {
135 sources += [
136 "quicdatachannel.cc",
137 "quicdatachannel.h",
138 "quicdatatransport.cc",
139 "quicdatatransport.h",
140 ]
141 deps += [ "//third_party/libquic" ]
142 public_deps = [
143 "//third_party/libquic",
144 ]
145 }
146}
kjellanderfd5b4e92016-06-13 12:08:33 -0700147
kjellander69b34622016-06-21 01:05:16 -0700148# Exclude the targets below from the Chromium build since they cannot be built
149# due to incompability with Chromium's logging implementation.
150if (is_android && !build_with_chromium) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700151 config("libjingle_peerconnection_jni_warnings_config") {
152 # The warnings below are enabled by default. Since GN orders compiler flags
153 # for a target before flags from configs, the only way to disable such
154 # warnings is by having them in a separate config, loaded from the target.
155 if (!is_win) {
156 cflags = [
157 "-Wno-sign-compare",
158 "-Wno-unused-variable",
159 ]
160 }
161 }
162
kjellanderb62dbbe2016-09-23 00:38:52 -0700163 rtc_static_library("libjingle_peerconnection_jni") {
kjellanderfd5b4e92016-06-13 12:08:33 -0700164 sources = [
sakald34a7112016-07-01 05:10:51 -0700165 "android/jni/androidmediacodeccommon.h",
166 "android/jni/androidmediadecoder_jni.cc",
167 "android/jni/androidmediadecoder_jni.h",
168 "android/jni/androidmediaencoder_jni.cc",
169 "android/jni/androidmediaencoder_jni.h",
170 "android/jni/androidmetrics_jni.cc",
171 "android/jni/androidnetworkmonitor_jni.cc",
172 "android/jni/androidnetworkmonitor_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200173 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700174 "android/jni/classreferenceholder.cc",
175 "android/jni/classreferenceholder.h",
176 "android/jni/jni_helpers.cc",
177 "android/jni/jni_helpers.h",
178 "android/jni/native_handle_impl.cc",
179 "android/jni/native_handle_impl.h",
180 "android/jni/peerconnection_jni.cc",
181 "android/jni/surfacetexturehelper_jni.cc",
182 "android/jni/surfacetexturehelper_jni.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200183 "androidvideotracksource.cc",
184 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700185 ]
186
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700187 configs += [ ":libjingle_peerconnection_jni_warnings_config" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700188
kjellandere40a7ee2016-10-16 23:56:12 -0700189 if (!build_with_chromium && is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700190 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700191 suppressed_configs += [
kjellanderfd5b4e92016-06-13 12:08:33 -0700192 "//build/config/clang:extra_warnings",
193 "//build/config/clang:find_bad_constructs",
194 ]
195 }
196
197 # TODO(jschuh): Bug 1348: fix this warning.
198 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
199
200 if (is_win) {
201 cflags += [
202 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
203 "/wd4389", # signed/unsigned mismatch.
204 ]
205 }
206
207 deps = [
208 ":libjingle_peerconnection",
sakal86ccd7b2016-08-22 00:26:01 -0700209 "../system_wrappers:field_trial_default",
kjellanderfd5b4e92016-06-13 12:08:33 -0700210 "../system_wrappers:metrics_default",
211 ]
212
213 if (rtc_build_libyuv) {
214 deps += [ "$rtc_libyuv_dir" ]
215 public_deps = [
216 "$rtc_libyuv_dir",
217 ]
218 } else {
219 # Need to add a directory normally exported by libyuv.
charujainb7446d72016-09-28 00:47:51 -0700220 include_dirs = [ "$rtc_libyuv_dir/include" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700221 }
222 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200223
ehmaldonadoacf9f472016-09-08 04:26:37 -0700224 rtc_shared_library("libjingle_peerconnection_so") {
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200225 sources = [
sakald34a7112016-07-01 05:10:51 -0700226 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200227 ]
228
ehmaldonadoacf9f472016-09-08 04:26:37 -0700229 suppressed_configs += [ "//build/config/android:hide_native_jni_exports" ]
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200230
231 deps = [
232 ":libjingle_peerconnection",
233 ":libjingle_peerconnection_jni",
234 ]
sakala53fa0a2016-08-24 00:48:21 -0700235 output_extension = "so"
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200236 }
237
238 android_library("libjingle_peerconnection_java") {
239 java_files = [
240 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
241 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
242 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
243 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
244 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
245 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700246 "android/java/src/org/webrtc/AudioSource.java",
247 "android/java/src/org/webrtc/AudioTrack.java",
248 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
sakal34425792016-09-21 01:34:56 -0700249 "android/java/src/org/webrtc/Camera1Capturer.java",
sakald34a7112016-07-01 05:10:51 -0700250 "android/java/src/org/webrtc/Camera1Enumerator.java",
sakal34425792016-09-21 01:34:56 -0700251 "android/java/src/org/webrtc/Camera1Session.java",
sakald34a7112016-07-01 05:10:51 -0700252 "android/java/src/org/webrtc/Camera2Capturer.java",
253 "android/java/src/org/webrtc/Camera2Enumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700254 "android/java/src/org/webrtc/Camera2Session.java",
255 "android/java/src/org/webrtc/CameraCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700256 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
257 "android/java/src/org/webrtc/CameraEnumerator.java",
sakald30e0ad2016-08-11 01:00:37 -0700258 "android/java/src/org/webrtc/CameraSession.java",
sakald34a7112016-07-01 05:10:51 -0700259 "android/java/src/org/webrtc/CameraVideoCapturer.java",
260 "android/java/src/org/webrtc/DataChannel.java",
261 "android/java/src/org/webrtc/EglBase.java",
262 "android/java/src/org/webrtc/EglBase10.java",
263 "android/java/src/org/webrtc/EglBase14.java",
magjeddf494b02016-10-07 05:32:35 -0700264 "android/java/src/org/webrtc/EglRenderer.java",
mandermo64e1a322016-10-18 08:47:51 -0700265 "android/java/src/org/webrtc/FileVideoCapturer.java",
sakald34a7112016-07-01 05:10:51 -0700266 "android/java/src/org/webrtc/GlRectDrawer.java",
267 "android/java/src/org/webrtc/GlShader.java",
268 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
269 "android/java/src/org/webrtc/GlUtil.java",
270 "android/java/src/org/webrtc/IceCandidate.java",
271 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
272 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
273 "android/java/src/org/webrtc/MediaConstraints.java",
274 "android/java/src/org/webrtc/MediaSource.java",
275 "android/java/src/org/webrtc/MediaStream.java",
276 "android/java/src/org/webrtc/MediaStreamTrack.java",
277 "android/java/src/org/webrtc/Metrics.java",
278 "android/java/src/org/webrtc/NetworkMonitor.java",
279 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
280 "android/java/src/org/webrtc/PeerConnection.java",
281 "android/java/src/org/webrtc/PeerConnectionFactory.java",
282 "android/java/src/org/webrtc/RendererCommon.java",
283 "android/java/src/org/webrtc/RtpParameters.java",
284 "android/java/src/org/webrtc/RtpReceiver.java",
285 "android/java/src/org/webrtc/RtpSender.java",
286 "android/java/src/org/webrtc/SdpObserver.java",
287 "android/java/src/org/webrtc/SessionDescription.java",
288 "android/java/src/org/webrtc/StatsObserver.java",
289 "android/java/src/org/webrtc/StatsReport.java",
290 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
291 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
292 "android/java/src/org/webrtc/VideoCapturer.java",
293 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
mandermo64e1a322016-10-18 08:47:51 -0700294 "android/java/src/org/webrtc/VideoFileRenderer.java",
sakald34a7112016-07-01 05:10:51 -0700295 "android/java/src/org/webrtc/VideoRenderer.java",
296 "android/java/src/org/webrtc/VideoRendererGui.java",
297 "android/java/src/org/webrtc/VideoSource.java",
298 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200299 ]
300
301 deps = [
302 "//webrtc/base:base_java",
303 ]
304 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700305}
306
hbos74e1a4f2016-09-15 23:33:01 -0700307# GYP version: webrtc/api/api.gyp:rtc_stats_api
308rtc_source_set("rtc_stats_api") {
309 cflags = []
310 sources = [
311 "stats/rtcstats.h",
312 "stats/rtcstats_objects.h",
313 "stats/rtcstatsreport.h",
314 ]
315
316 deps = [
317 "../base:rtc_base_approved",
318 ]
319}
320
kjellanderfd5b4e92016-06-13 12:08:33 -0700321if (rtc_include_tests) {
322 config("peerconnection_unittests_config") {
323 # The warnings below are enabled by default. Since GN orders compiler flags
324 # for a target before flags from configs, the only way to disable such
325 # warnings is by having them in a separate config, loaded from the target.
326 # TODO(kjellander): Make the code compile without disabling these flags.
327 # See https://bugs.webrtc.org/3307.
328 if (is_clang && is_win) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700329 cflags = [
330 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
331 # for -Wno-sign-compare
332 "-Wno-sign-compare",
333 "-Wno-unused-function",
334 ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700335 }
336
337 if (!is_win) {
338 cflags = [ "-Wno-sign-compare" ]
339 cflags_cc = [ "-Wno-overloaded-virtual" ]
340 }
341 }
342
ehmaldonado38a21322016-09-02 04:10:34 -0700343 rtc_test("peerconnection_unittests") {
kjellanderfd5b4e92016-06-13 12:08:33 -0700344 testonly = true
345 sources = [
346 "datachannel_unittest.cc",
347 "dtmfsender_unittest.cc",
348 "fakemetricsobserver.cc",
349 "fakemetricsobserver.h",
350 "jsepsessiondescription_unittest.cc",
351 "localaudiosource_unittest.cc",
352 "mediaconstraintsinterface_unittest.cc",
353 "mediastream_unittest.cc",
354 "peerconnection_unittest.cc",
355 "peerconnectionendtoend_unittest.cc",
356 "peerconnectionfactory_unittest.cc",
357 "peerconnectioninterface_unittest.cc",
358 "proxy_unittest.cc",
hbos74e1a4f2016-09-15 23:33:01 -0700359 "rtcstatscollector_unittest.cc",
kjellanderfd5b4e92016-06-13 12:08:33 -0700360 "rtpsenderreceiver_unittest.cc",
361 "statscollector_unittest.cc",
362 "test/fakeaudiocapturemodule.cc",
363 "test/fakeaudiocapturemodule.h",
364 "test/fakeaudiocapturemodule_unittest.cc",
365 "test/fakeconstraints.h",
366 "test/fakedatachannelprovider.h",
367 "test/fakeperiodicvideocapturer.h",
368 "test/fakertccertificategenerator.h",
369 "test/fakevideotrackrenderer.h",
hbosd565b732016-08-30 14:04:35 -0700370 "test/mock_datachannel.h",
hbosb24b1ce2016-08-16 01:19:43 -0700371 "test/mock_peerconnection.h",
372 "test/mock_webrtcsession.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700373 "test/mockpeerconnectionobservers.h",
374 "test/peerconnectiontestwrapper.cc",
375 "test/peerconnectiontestwrapper.h",
376 "test/testsdpstrings.h",
377 "videocapturertracksource_unittest.cc",
378 "videotrack_unittest.cc",
379 "webrtcsdp_unittest.cc",
380 "webrtcsession_unittest.cc",
381 ]
382
383 defines = [ "HAVE_SCTP" ]
384
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700385 configs += [ ":peerconnection_unittests_config" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700386
kjellandere40a7ee2016-10-16 23:56:12 -0700387 if (!build_with_chromium && is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700388 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700389 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
kjellanderfd5b4e92016-06-13 12:08:33 -0700390 }
391
392 # TODO(jschuh): Bug 1348: fix this warning.
393 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
394
395 if (is_win) {
396 cflags = [
397 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
398 "/wd4389", # signed/unsigned mismatch.
399 ]
400 }
401
402 if (rtc_use_quic) {
403 public_deps = [
404 "//third_party/libquic",
405 ]
406 sources += [
407 "quicdatachannel_unittest.cc",
408 "quicdatatransport_unittest.cc",
409 ]
410 }
411
412 deps = []
413 if (is_android) {
414 sources += [
415 "test/androidtestinitializer.cc",
416 "test/androidtestinitializer.h",
417 ]
418 deps += [
kjellanderb37c45c2016-08-23 12:55:40 -0700419 ":libjingle_peerconnection_java",
kjellanderfd5b4e92016-06-13 12:08:33 -0700420 ":libjingle_peerconnection_jni",
421 "//testing/android/native_test:native_test_support",
422 ]
423 }
424
425 deps += [
426 ":libjingle_peerconnection",
427 "..:webrtc_common",
428 "../base:rtc_base_tests_utils",
429 "../media:rtc_unittest_main",
430 "../pc:rtc_pc",
431 "../system_wrappers:metrics_default",
432 "//testing/gmock",
433 ]
434
435 if (is_android) {
436 deps += [ "//testing/android/native_test:native_test_support" ]
sakal714dd4e2016-08-15 02:29:11 -0700437
438 shard_timeout = 900
kjellanderfd5b4e92016-06-13 12:08:33 -0700439 }
440 }
ehmaldonado3651d8f2016-08-10 03:10:48 -0700441
442 if (is_android) {
443 instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
444 apk_name = "libjingle_peerconnection_android_unittest"
445 android_manifest = "androidtests/AndroidManifest.xml"
446
447 java_files = [
448 "androidtests/src/org/webrtc/Camera1CapturerUsingByteBufferTest.java",
449 "androidtests/src/org/webrtc/Camera1CapturerUsingTextureTest.java",
450 "androidtests/src/org/webrtc/Camera2CapturerTest.java",
451 "androidtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java",
452 "androidtests/src/org/webrtc/GlRectDrawerTest.java",
453 "androidtests/src/org/webrtc/MediaCodecVideoEncoderTest.java",
454 "androidtests/src/org/webrtc/NetworkMonitorTest.java",
455 "androidtests/src/org/webrtc/PeerConnectionTest.java",
456 "androidtests/src/org/webrtc/RendererCommonTest.java",
457 "androidtests/src/org/webrtc/SurfaceTextureHelperTest.java",
458 "androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java",
459 ]
460
461 deps = [
462 ":libjingle_peerconnection_android_unittest_resources",
463 ":libjingle_peerconnection_java",
464 "//base:base_java",
465 "//webrtc/base:base_java",
466 ]
467
468 shared_libraries = [ ":libjingle_peerconnection_so" ]
469 }
470
471 android_resources("libjingle_peerconnection_android_unittest_resources") {
472 resource_dirs = [ "androidtests/res" ]
473 custom_package = "org.webrtc"
474 }
475 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700476}