blob: 526e82c0946b0e880ce9622e7cb60fe236bb4f06 [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",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200159 "android/jni/androidvideotracksource_jni.cc",
sakald34a7112016-07-01 05:10:51 -0700160 "android/jni/classreferenceholder.cc",
161 "android/jni/classreferenceholder.h",
162 "android/jni/jni_helpers.cc",
163 "android/jni/jni_helpers.h",
164 "android/jni/native_handle_impl.cc",
165 "android/jni/native_handle_impl.h",
166 "android/jni/peerconnection_jni.cc",
167 "android/jni/surfacetexturehelper_jni.cc",
168 "android/jni/surfacetexturehelper_jni.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700169 "androidvideocapturer.cc",
170 "androidvideocapturer.h",
Sami Kalliomaki16032122016-07-20 16:13:08 +0200171 "androidvideotracksource.cc",
172 "androidvideotracksource.h",
kjellanderfd5b4e92016-06-13 12:08:33 -0700173 ]
174
175 configs += [
176 "..:common_config",
177 ":libjingle_peerconnection_jni_warnings_config",
178 ]
179 public_configs = [ "..:common_inherited_config" ]
180
181 if (is_clang) {
182 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
183 configs -= [
184 "//build/config/clang:extra_warnings",
185 "//build/config/clang:find_bad_constructs",
186 ]
187 }
188
189 # TODO(jschuh): Bug 1348: fix this warning.
190 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
191
192 if (is_win) {
193 cflags += [
194 "/wd4245", # conversion from "int" to "size_t", signed/unsigned mismatch.
195 "/wd4389", # signed/unsigned mismatch.
196 ]
197 }
198
199 deps = [
200 ":libjingle_peerconnection",
201 "../system_wrappers:field_trial_default",
202 "../system_wrappers:metrics_default",
203 ]
204
205 if (rtc_build_libyuv) {
206 deps += [ "$rtc_libyuv_dir" ]
207 public_deps = [
208 "$rtc_libyuv_dir",
209 ]
210 } else {
211 # Need to add a directory normally exported by libyuv.
212 include_dirs += [ "$rtc_libyuv_dir/include" ]
213 }
214 }
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200215
216 shared_library("libjingle_peerconnection_so") {
217 sources = [
sakald34a7112016-07-01 05:10:51 -0700218 "android/jni/jni_onload.cc",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200219 ]
220
221 configs -= [ "//build/config/android:hide_native_jni_exports" ]
222
223 deps = [
224 ":libjingle_peerconnection",
225 ":libjingle_peerconnection_jni",
226 ]
227 }
228
229 android_library("libjingle_peerconnection_java") {
230 java_files = [
231 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java",
232 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
233 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
234 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
235 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
236 "../modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
sakald34a7112016-07-01 05:10:51 -0700237 "android/java/src/org/webrtc/AudioSource.java",
238 "android/java/src/org/webrtc/AudioTrack.java",
239 "android/java/src/org/webrtc/CallSessionFileRotatingLogSink.java",
240 "android/java/src/org/webrtc/Camera1Enumerator.java",
241 "android/java/src/org/webrtc/Camera2Capturer.java",
242 "android/java/src/org/webrtc/Camera2Enumerator.java",
243 "android/java/src/org/webrtc/CameraEnumerationAndroid.java",
244 "android/java/src/org/webrtc/CameraEnumerator.java",
245 "android/java/src/org/webrtc/CameraVideoCapturer.java",
246 "android/java/src/org/webrtc/DataChannel.java",
247 "android/java/src/org/webrtc/EglBase.java",
248 "android/java/src/org/webrtc/EglBase10.java",
249 "android/java/src/org/webrtc/EglBase14.java",
250 "android/java/src/org/webrtc/GlRectDrawer.java",
251 "android/java/src/org/webrtc/GlShader.java",
252 "android/java/src/org/webrtc/GlTextureFrameBuffer.java",
253 "android/java/src/org/webrtc/GlUtil.java",
254 "android/java/src/org/webrtc/IceCandidate.java",
255 "android/java/src/org/webrtc/MediaCodecVideoDecoder.java",
256 "android/java/src/org/webrtc/MediaCodecVideoEncoder.java",
257 "android/java/src/org/webrtc/MediaConstraints.java",
258 "android/java/src/org/webrtc/MediaSource.java",
259 "android/java/src/org/webrtc/MediaStream.java",
260 "android/java/src/org/webrtc/MediaStreamTrack.java",
261 "android/java/src/org/webrtc/Metrics.java",
262 "android/java/src/org/webrtc/NetworkMonitor.java",
263 "android/java/src/org/webrtc/NetworkMonitorAutoDetect.java",
264 "android/java/src/org/webrtc/PeerConnection.java",
265 "android/java/src/org/webrtc/PeerConnectionFactory.java",
266 "android/java/src/org/webrtc/RendererCommon.java",
267 "android/java/src/org/webrtc/RtpParameters.java",
268 "android/java/src/org/webrtc/RtpReceiver.java",
269 "android/java/src/org/webrtc/RtpSender.java",
270 "android/java/src/org/webrtc/SdpObserver.java",
271 "android/java/src/org/webrtc/SessionDescription.java",
272 "android/java/src/org/webrtc/StatsObserver.java",
273 "android/java/src/org/webrtc/StatsReport.java",
274 "android/java/src/org/webrtc/SurfaceTextureHelper.java",
275 "android/java/src/org/webrtc/SurfaceViewRenderer.java",
276 "android/java/src/org/webrtc/VideoCapturer.java",
277 "android/java/src/org/webrtc/VideoCapturerAndroid.java",
278 "android/java/src/org/webrtc/VideoRenderer.java",
279 "android/java/src/org/webrtc/VideoRendererGui.java",
280 "android/java/src/org/webrtc/VideoSource.java",
281 "android/java/src/org/webrtc/VideoTrack.java",
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200282 ]
283
284 deps = [
285 "//webrtc/base:base_java",
286 ]
287 }
kjellanderfd5b4e92016-06-13 12:08:33 -0700288}
289
290if (rtc_include_tests) {
291 config("peerconnection_unittests_config") {
292 # The warnings below are enabled by default. Since GN orders compiler flags
293 # for a target before flags from configs, the only way to disable such
294 # warnings is by having them in a separate config, loaded from the target.
295 # TODO(kjellander): Make the code compile without disabling these flags.
296 # See https://bugs.webrtc.org/3307.
297 if (is_clang && is_win) {
298 cflags = [ "-Wno-unused-function" ]
299 }
300
301 if (!is_win) {
302 cflags = [ "-Wno-sign-compare" ]
303 cflags_cc = [ "-Wno-overloaded-virtual" ]
304 }
305 }
306
307 test("peerconnection_unittests") {
308 testonly = true
309 sources = [
310 "datachannel_unittest.cc",
311 "dtmfsender_unittest.cc",
312 "fakemetricsobserver.cc",
313 "fakemetricsobserver.h",
314 "jsepsessiondescription_unittest.cc",
315 "localaudiosource_unittest.cc",
316 "mediaconstraintsinterface_unittest.cc",
317 "mediastream_unittest.cc",
318 "peerconnection_unittest.cc",
319 "peerconnectionendtoend_unittest.cc",
320 "peerconnectionfactory_unittest.cc",
321 "peerconnectioninterface_unittest.cc",
322 "proxy_unittest.cc",
323 "rtpsenderreceiver_unittest.cc",
324 "statscollector_unittest.cc",
325 "test/fakeaudiocapturemodule.cc",
326 "test/fakeaudiocapturemodule.h",
327 "test/fakeaudiocapturemodule_unittest.cc",
328 "test/fakeconstraints.h",
329 "test/fakedatachannelprovider.h",
330 "test/fakeperiodicvideocapturer.h",
331 "test/fakertccertificategenerator.h",
332 "test/fakevideotrackrenderer.h",
333 "test/mockpeerconnectionobservers.h",
334 "test/peerconnectiontestwrapper.cc",
335 "test/peerconnectiontestwrapper.h",
336 "test/testsdpstrings.h",
337 "videocapturertracksource_unittest.cc",
338 "videotrack_unittest.cc",
339 "webrtcsdp_unittest.cc",
340 "webrtcsession_unittest.cc",
341 ]
342
343 defines = [ "HAVE_SCTP" ]
344
345 configs += [
346 "..:common_config",
347 ":peerconnection_unittests_config",
348 ]
349 public_configs = [ "..:common_inherited_config" ]
350
351 if (is_clang) {
352 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
353 configs -= [ "//build/config/clang:find_bad_constructs" ]
354 }
355
356 # TODO(jschuh): Bug 1348: fix this warning.
357 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
358
359 if (is_win) {
360 cflags = [
361 "/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
362 "/wd4389", # signed/unsigned mismatch.
363 ]
364 }
365
366 if (rtc_use_quic) {
367 public_deps = [
368 "//third_party/libquic",
369 ]
370 sources += [
371 "quicdatachannel_unittest.cc",
372 "quicdatatransport_unittest.cc",
373 ]
374 }
375
376 deps = []
377 if (is_android) {
378 sources += [
379 "test/androidtestinitializer.cc",
380 "test/androidtestinitializer.h",
381 ]
382 deps += [
383 ":libjingle_peerconnection_jni",
384 "//testing/android/native_test:native_test_support",
385 ]
386 }
387
388 deps += [
389 ":libjingle_peerconnection",
390 "..:webrtc_common",
391 "../base:rtc_base_tests_utils",
392 "../media:rtc_unittest_main",
393 "../pc:rtc_pc",
394 "../system_wrappers:metrics_default",
395 "//testing/gmock",
396 ]
397
398 if (is_android) {
399 deps += [ "//testing/android/native_test:native_test_support" ]
400 }
401 }
402}