blob: 391af74e7e4538bc1d58e290a13d38c6929cf4bd [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",
72 "rtpparameters.h",
73 "rtpreceiver.cc",
74 "rtpreceiver.h",
75 "rtpreceiverinterface.h",
76 "rtpsender.cc",
77 "rtpsender.h",
78 "rtpsenderinterface.h",
79 "sctputils.cc",
80 "sctputils.h",
81 "statscollector.cc",
82 "statscollector.h",
83 "statstypes.cc",
84 "statstypes.h",
85 "streamcollection.h",
86 "videocapturertracksource.cc",
87 "videocapturertracksource.h",
88 "videosourceproxy.h",
89 "videotrack.cc",
90 "videotrack.h",
91 "videotracksource.cc",
92 "videotracksource.h",
93 "webrtcsdp.cc",
94 "webrtcsdp.h",
95 "webrtcsession.cc",
96 "webrtcsession.h",
97 "webrtcsessiondescriptionfactory.cc",
98 "webrtcsessiondescriptionfactory.h",
99 ]
100
101 configs += [
102 "..:common_config",
103 ":libjingle_peerconnection_warnings_config",
104 ]
105 public_configs = [ "..:common_inherited_config" ]
106
107 if (is_clang) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700108 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
kjellanderc76dc952016-06-03 03:09:32 -0700109 configs -= [ "//build/config/clang:find_bad_constructs" ]
110 }
111
kjellanderc76dc952016-06-03 03:09:32 -0700112 deps = [
katrielc14897d02016-06-03 13:14:28 -0700113 "../call",
kjellanderc76dc952016-06-03 03:09:32 -0700114 "../media",
115 "../pc",
116 ]
117
118 if (rtc_use_quic) {
119 sources += [
120 "quicdatachannel.cc",
121 "quicdatachannel.h",
122 "quicdatatransport.cc",
123 "quicdatatransport.h",
124 ]
125 deps += [ "//third_party/libquic" ]
126 public_deps = [
127 "//third_party/libquic",
128 ]
129 }
130}
kjellanderfd5b4e92016-06-13 12:08:33 -0700131
kjellander69b34622016-06-21 01:05:16 -0700132# Exclude the targets below from the Chromium build since they cannot be built
133# due to incompability with Chromium's logging implementation.
134if (is_android && !build_with_chromium) {
kjellanderfd5b4e92016-06-13 12:08:33 -0700135 config("libjingle_peerconnection_jni_warnings_config") {
136 # The warnings below are enabled by default. Since GN orders compiler flags
137 # for a target before flags from configs, the only way to disable such
138 # warnings is by having them in a separate config, loaded from the target.
139 if (!is_win) {
140 cflags = [
141 "-Wno-sign-compare",
142 "-Wno-unused-variable",
143 ]
144 }
145 }
146
147 source_set("libjingle_peerconnection_jni") {
148 sources = [
sakald34a7112016-07-01 05:10:51 -0700149 "android/jni/androidmediacodeccommon.h",
150 "android/jni/androidmediadecoder_jni.cc",
151 "android/jni/androidmediadecoder_jni.h",
152 "android/jni/androidmediaencoder_jni.cc",
153 "android/jni/androidmediaencoder_jni.h",
154 "android/jni/androidmetrics_jni.cc",
155 "android/jni/androidnetworkmonitor_jni.cc",
156 "android/jni/androidnetworkmonitor_jni.h",
157 "android/jni/androidvideocapturer_jni.cc",
158 "android/jni/androidvideocapturer_jni.h",
159 "android/jni/classreferenceholder.cc",
160 "android/jni/classreferenceholder.h",
161 "android/jni/jni_helpers.cc",
162 "android/jni/jni_helpers.h",
163 "android/jni/native_handle_impl.cc",
164 "android/jni/native_handle_impl.h",
165 "android/jni/peerconnection_jni.cc",
166 "android/jni/surfacetexturehelper_jni.cc",
167 "android/jni/surfacetexturehelper_jni.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700168 "androidvideocapturer.cc",
169 "androidvideocapturer.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700170 ]
171
172 configs += [
173 "..:common_config",
174 ":libjingle_peerconnection_jni_warnings_config",
175 ]
176 public_configs = [ "..:common_inherited_config" ]
177
178 if (is_clang) {
179 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
180 configs -= [
181 "//build/config/clang:extra_warnings",
182 "//build/config/clang:find_bad_constructs",
183 ]
184 }
185
186 # TODO(jschuh): Bug 1348: fix this warning.
187 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
188
189 if (is_win) {
190 cflags += [
191 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
192 "/wd4389", # signed/unsigned mismatch.
193 ]
194 }
195
196 deps = [
197 ":libjingle_peerconnection",
198 "../system_wrappers:field_trial_default",
199 "../system_wrappers:metrics_default",
200 ]
201
202 if (rtc_build_libyuv) {
203 deps += [ "$rtc_libyuv_dir" ]
204 public_deps = [
205 "$rtc_libyuv_dir",
206 ]
207 } else {
208 # Need to add a directory normally exported by libyuv.
209 include_dirs += [ "$rtc_libyuv_dir/include" ]
210 }
211 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200212
213 shared_library("libjingle_peerconnection_so") {
214 sources = [
sakald34a7112016-07-01 05:10:51 -0700215 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200216 ]
217
218 configs -= [ "//build/config/android:hide_native_jni_exports" ]
219
220 deps = [
221 ":libjingle_peerconnection",
222 ":libjingle_peerconnection_jni",
223 ]
224 }
225
226 android_library("libjingle_peerconnection_java") {
227 java_files = [
228 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
229 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
230 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
231 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
232 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
233 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700234 "android/java/src/org/webrtc/AudioSource.java",
235 "android/java/src/org/webrtc/AudioTrack.java",
236 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
237 "android/java/src/org/webrtc/Camera1Enumerator.java",
238 "android/java/src/org/webrtc/Camera2Capturer.java",
239 "android/java/src/org/webrtc/Camera2Enumerator.java",
240 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
241 "android/java/src/org/webrtc/CameraEnumerator.java",
242 "android/java/src/org/webrtc/CameraVideoCapturer.java",
243 "android/java/src/org/webrtc/DataChannel.java",
244 "android/java/src/org/webrtc/EglBase.java",
245 "android/java/src/org/webrtc/EglBase10.java",
246 "android/java/src/org/webrtc/EglBase14.java",
247 "android/java/src/org/webrtc/GlRectDrawer.java",
248 "android/java/src/org/webrtc/GlShader.java",
249 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
250 "android/java/src/org/webrtc/GlUtil.java",
251 "android/java/src/org/webrtc/IceCandidate.java",
252 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
253 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
254 "android/java/src/org/webrtc/MediaConstraints.java",
255 "android/java/src/org/webrtc/MediaSource.java",
256 "android/java/src/org/webrtc/MediaStream.java",
257 "android/java/src/org/webrtc/MediaStreamTrack.java",
258 "android/java/src/org/webrtc/Metrics.java",
259 "android/java/src/org/webrtc/NetworkMonitor.java",
260 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
261 "android/java/src/org/webrtc/PeerConnection.java",
262 "android/java/src/org/webrtc/PeerConnectionFactory.java",
263 "android/java/src/org/webrtc/RendererCommon.java",
264 "android/java/src/org/webrtc/RtpParameters.java",
265 "android/java/src/org/webrtc/RtpReceiver.java",
266 "android/java/src/org/webrtc/RtpSender.java",
267 "android/java/src/org/webrtc/SdpObserver.java",
268 "android/java/src/org/webrtc/SessionDescription.java",
269 "android/java/src/org/webrtc/StatsObserver.java",
270 "android/java/src/org/webrtc/StatsReport.java",
271 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
272 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
273 "android/java/src/org/webrtc/VideoCapturer.java",
274 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
275 "android/java/src/org/webrtc/VideoRenderer.java",
276 "android/java/src/org/webrtc/VideoRendererGui.java",
277 "android/java/src/org/webrtc/VideoSource.java",
278 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200279 ]
280
281 deps = [
282 "//webrtc/base:base_java",
283 ]
284 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700285}
286
287if (rtc_include_tests) {
288 config("peerconnection_unittests_config") {
289 # The warnings below are enabled by default. Since GN orders compiler flags
290 # for a target before flags from configs, the only way to disable such
291 # warnings is by having them in a separate config, loaded from the target.
292 # TODO(kjellander): Make the code compile without disabling these flags.
293 # See https://bugs.webrtc.org/3307.
294 if (is_clang && is_win) {
295 cflags = [ "-Wno-unused-function" ]
296 }
297
298 if (!is_win) {
299 cflags = [ "-Wno-sign-compare" ]
300 cflags_cc = [ "-Wno-overloaded-virtual" ]
301 }
302 }
303
304 test("peerconnection_unittests") {
305 testonly = true
306 sources = [
307 "datachannel_unittest.cc",
308 "dtmfsender_unittest.cc",
309 "fakemetricsobserver.cc",
310 "fakemetricsobserver.h",
311 "jsepsessiondescription_unittest.cc",
312 "localaudiosource_unittest.cc",
313 "mediaconstraintsinterface_unittest.cc",
314 "mediastream_unittest.cc",
315 "peerconnection_unittest.cc",
316 "peerconnectionendtoend_unittest.cc",
317 "peerconnectionfactory_unittest.cc",
318 "peerconnectioninterface_unittest.cc",
319 "proxy_unittest.cc",
320 "rtpsenderreceiver_unittest.cc",
321 "statscollector_unittest.cc",
322 "test/fakeaudiocapturemodule.cc",
323 "test/fakeaudiocapturemodule.h",
324 "test/fakeaudiocapturemodule_unittest.cc",
325 "test/fakeconstraints.h",
326 "test/fakedatachannelprovider.h",
327 "test/fakeperiodicvideocapturer.h",
328 "test/fakertccertificategenerator.h",
329 "test/fakevideotrackrenderer.h",
330 "test/mockpeerconnectionobservers.h",
331 "test/peerconnectiontestwrapper.cc",
332 "test/peerconnectiontestwrapper.h",
333 "test/testsdpstrings.h",
334 "videocapturertracksource_unittest.cc",
335 "videotrack_unittest.cc",
336 "webrtcsdp_unittest.cc",
337 "webrtcsession_unittest.cc",
338 ]
339
340 defines = [ "HAVE_SCTP" ]
341
342 configs += [
343 "..:common_config",
344 ":peerconnection_unittests_config",
345 ]
346 public_configs = [ "..:common_inherited_config" ]
347
348 if (is_clang) {
349 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
350 configs -= [ "//build/config/clang:find_bad_constructs" ]
351 }
352
353 # TODO(jschuh): Bug 1348: fix this warning.
354 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
355
356 if (is_win) {
357 cflags = [
358 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
359 "/wd4389", # signed/unsigned mismatch.
360 ]
361 }
362
363 if (rtc_use_quic) {
364 public_deps = [
365 "//third_party/libquic",
366 ]
367 sources += [
368 "quicdatachannel_unittest.cc",
369 "quicdatatransport_unittest.cc",
370 ]
371 }
372
373 deps = []
374 if (is_android) {
375 sources += [
376 "test/androidtestinitializer.cc",
377 "test/androidtestinitializer.h",
378 ]
379 deps += [
380 ":libjingle_peerconnection_jni",
381 "//testing/android/native_test:native_test_support",
382 ]
383 }
384
385 deps += [
386 ":libjingle_peerconnection",
387 "..:webrtc_common",
388 "../base:rtc_base_tests_utils",
389 "../media:rtc_unittest_main",
390 "../pc:rtc_pc",
391 "../system_wrappers:metrics_default",
392 "//testing/gmock",
393 ]
394
395 if (is_android) {
396 deps += [ "//testing/android/native_test:native_test_support" ]
397 }
398 }
399}