1#
2# libjingle
3# Copyright 2012 Google Inc.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are met:
7#
8#  1. Redistributions of source code must retain the above copyright notice,
9#     this list of conditions and the following disclaimer.
10#  2. Redistributions in binary form must reproduce the above copyright notice,
11#     this list of conditions and the following disclaimer in the documentation
12#     and/or other materials provided with the distribution.
13#  3. The name of the author may not be used to endorse or promote products
14#     derived from this software without specific prior written permission.
15#
16# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
19# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27{
28  'includes': ['build/common.gypi'],
29  'conditions': [
30    ['os_posix == 1 and OS != "mac" and OS != "ios"', {
31     'conditions': [
32       ['sysroot!=""', {
33         'variables': {
34           'pkg-config': '../../../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"',
35         },
36       }, {
37         'variables': {
38           'pkg-config': 'pkg-config'
39         },
40       }],
41     ],
42    }],
43    ['OS=="linux" or OS=="android"', {
44      'targets': [
45        {
46          'target_name': 'libjingle_peerconnection_jni',
47          'type': 'static_library',
48          'dependencies': [
49            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default',
50            'libjingle_peerconnection',
51          ],
52          'sources': [
53            'app/webrtc/java/jni/classreferenceholder.cc',
54            'app/webrtc/java/jni/classreferenceholder.h',
55            'app/webrtc/java/jni/jni_helpers.cc',
56            'app/webrtc/java/jni/jni_helpers.h',
57            'app/webrtc/java/jni/native_handle_impl.cc',
58            'app/webrtc/java/jni/native_handle_impl.h',
59            'app/webrtc/java/jni/peerconnection_jni.cc',
60          ],
61          'include_dirs': [
62            '<(libyuv_dir)/include',
63          ],
64          'conditions': [
65            ['OS=="linux"', {
66              'include_dirs': [
67                '<(java_home)/include',
68                '<(java_home)/include/linux',
69              ],
70            }],
71           ['build_json==1', {
72              'dependencies': [
73                '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
74              ],
75              'export_dependent_settings': [
76                '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
77              ],
78            }],
79            ['OS=="android"', {
80              'sources': [
81                'app/webrtc/androidvideocapturer.cc',
82                'app/webrtc/androidvideocapturer.h',
83                'app/webrtc/java/jni/androidmediacodeccommon.h',
84                'app/webrtc/java/jni/androidmediadecoder_jni.cc',
85                'app/webrtc/java/jni/androidmediadecoder_jni.h',
86                'app/webrtc/java/jni/androidmediaencoder_jni.cc',
87                'app/webrtc/java/jni/androidmediaencoder_jni.h',
88                'app/webrtc/java/jni/androidnetworkmonitor_jni.cc',
89                'app/webrtc/java/jni/androidnetworkmonitor_jni.h',
90                'app/webrtc/java/jni/androidvideocapturer_jni.cc',
91                'app/webrtc/java/jni/androidvideocapturer_jni.h',
92                'app/webrtc/java/jni/surfacetexturehelper_jni.cc',
93                'app/webrtc/java/jni/surfacetexturehelper_jni.h',
94              ]
95            }],
96          ],
97        },
98        {
99          'target_name': 'libjingle_peerconnection_so',
100          'type': 'shared_library',
101          'dependencies': [
102            'libjingle_peerconnection',
103            'libjingle_peerconnection_jni',
104          ],
105          'sources': [
106           'app/webrtc/java/jni/jni_onload.cc',
107          ],
108          'variables': {
109            # This library uses native JNI exports; tell GYP so that the
110            # required symbols will be kept.
111            'use_native_jni_exports': 1,
112          },
113          'conditions': [
114            ['OS=="linux"', {
115              'defines': [
116                'HAVE_GTK',
117              ],
118              'include_dirs': [
119                '<(java_home)/include',
120                '<(java_home)/include/linux',
121              ],
122              'conditions': [
123                ['use_gtk==1', {
124                  'link_settings': {
125                    'libraries': [
126                      '<!@(pkg-config --libs-only-l gobject-2.0 gthread-2.0'
127                          ' gtk+-2.0)',
128                    ],
129                  },
130                }],
131              ],
132            }],
133          ],
134        },
135        {
136          'target_name': 'libjingle_peerconnection_jar',
137          'type': 'none',
138          'actions': [
139            {
140              # TODO(jiayl): extract peerconnection_java_files and android_java_files into a webrtc
141              # gyp var that can be included here, or better yet, build a proper .jar in webrtc
142              # and include it here.
143              'variables': {
144                'java_src_dir': 'app/webrtc/java/src',
145                'webrtc_base_dir': '<(webrtc_root)/base',
146                'webrtc_modules_dir': '<(webrtc_root)/modules',
147                'build_jar_log': '<(INTERMEDIATE_DIR)/build_jar.log',
148                'peerconnection_java_files': [
149                  'app/webrtc/java/src/org/webrtc/AudioSource.java',
150                  'app/webrtc/java/src/org/webrtc/AudioTrack.java',
151                  'app/webrtc/java/src/org/webrtc/CallSessionFileRotatingLogSink.java',
152                  'app/webrtc/java/src/org/webrtc/DataChannel.java',
153                  'app/webrtc/java/src/org/webrtc/IceCandidate.java',
154                  'app/webrtc/java/src/org/webrtc/MediaConstraints.java',
155                  'app/webrtc/java/src/org/webrtc/MediaSource.java',
156                  'app/webrtc/java/src/org/webrtc/MediaStream.java',
157                  'app/webrtc/java/src/org/webrtc/MediaStreamTrack.java',
158                  'app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java',
159                  'app/webrtc/java/src/org/webrtc/PeerConnection.java',
160                  'app/webrtc/java/src/org/webrtc/RtpReceiver.java',
161                  'app/webrtc/java/src/org/webrtc/RtpSender.java',
162                  'app/webrtc/java/src/org/webrtc/SdpObserver.java',
163                  'app/webrtc/java/src/org/webrtc/StatsObserver.java',
164                  'app/webrtc/java/src/org/webrtc/StatsReport.java',
165                  'app/webrtc/java/src/org/webrtc/SessionDescription.java',
166                  'app/webrtc/java/src/org/webrtc/VideoCapturer.java',
167                  'app/webrtc/java/src/org/webrtc/VideoRenderer.java',
168                  'app/webrtc/java/src/org/webrtc/VideoSource.java',
169                  'app/webrtc/java/src/org/webrtc/VideoTrack.java',
170                  '<(webrtc_base_dir)/java/src/org/webrtc/Logging.java',
171                ],
172                'android_java_files': [
173                  'app/webrtc/java/android/org/webrtc/Camera2Enumerator.java',
174                  'app/webrtc/java/android/org/webrtc/CameraEnumerationAndroid.java',
175                  'app/webrtc/java/android/org/webrtc/CameraEnumerator.java',
176                  'app/webrtc/java/android/org/webrtc/EglBase.java',
177                  'app/webrtc/java/android/org/webrtc/EglBase10.java',
178                  'app/webrtc/java/android/org/webrtc/EglBase14.java',
179                  'app/webrtc/java/android/org/webrtc/GlRectDrawer.java',
180                  'app/webrtc/java/android/org/webrtc/GlShader.java',
181                  'app/webrtc/java/android/org/webrtc/GlUtil.java',
182                  'app/webrtc/java/android/org/webrtc/GlTextureFrameBuffer.java',
183                  'app/webrtc/java/android/org/webrtc/NetworkMonitor.java',
184                  'app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java',
185                  'app/webrtc/java/android/org/webrtc/RendererCommon.java',
186                  'app/webrtc/java/android/org/webrtc/SurfaceTextureHelper.java',
187                  'app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java',
188                  'app/webrtc/java/android/org/webrtc/ThreadUtils.java',
189                  'app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java',
190                  'app/webrtc/java/android/org/webrtc/VideoRendererGui.java',
191                  'app/webrtc/java/src/org/webrtc/MediaCodecVideoDecoder.java',
192                  'app/webrtc/java/src/org/webrtc/MediaCodecVideoEncoder.java',
193                  '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViEAndroidGLES20.java',
194                  '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViERenderer.java',
195                  '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViESurfaceRenderer.java',
196                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java',
197                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java',
198                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java',
199                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java',
200                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java',
201                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java',
202                ],
203              },
204              'action_name': 'create_jar',
205              'inputs': [
206                'build/build_jar.sh',
207                '<@(java_files)',
208              ],
209              'outputs': [
210                '<(PRODUCT_DIR)/libjingle_peerconnection.jar',
211              ],
212              'conditions': [
213                ['OS=="android"', {
214                  'variables': {
215                    'java_files': ['<@(peerconnection_java_files)', '<@(android_java_files)'],
216                    'build_classpath': '<(java_src_dir):<(DEPTH)/third_party/android_tools/sdk/platforms/android-<(android_sdk_version)/android.jar',
217                  },
218                }, {
219                  'variables': {
220                    'java_files': ['<@(peerconnection_java_files)'],
221                    'build_classpath': '<(java_src_dir)',
222                  },
223                }],
224              ],
225              'action': [
226                'bash', '-ec',
227                'mkdir -p <(INTERMEDIATE_DIR) && '
228                '{ build/build_jar.sh <(java_home) <@(_outputs) '
229                '      <(INTERMEDIATE_DIR)/build_jar.tmp '
230                '      <(build_classpath) <@(java_files) '
231                '      > <(build_jar_log) 2>&1 || '
232                '  { cat <(build_jar_log) ; exit 1; } }'
233              ],
234            },
235          ],
236          'dependencies': [
237            'libjingle_peerconnection_so',
238          ],
239        },
240      ],
241    }],
242    ['OS=="android"', {
243      'targets': [
244        {
245          # |libjingle_peerconnection_java| builds a jar file with name
246          # libjingle_peerconnection_java.jar using Chromes build system.
247          # It includes all Java files needed to setup a PeeerConnection call
248          # from Android.
249          # TODO(perkj): Consider replacing the use of
250          # libjingle_peerconnection_jar with this target everywhere.
251          'target_name': 'libjingle_peerconnection_java',
252          'type': 'none',
253          'dependencies': [
254            'libjingle_peerconnection_so',
255          ],
256          'variables': {
257            # Designate as Chromium code and point to our lint settings to
258            # enable linting of the WebRTC code (this is the only way to make
259            # lint_action invoke the Android linter).
260            'android_manifest_path': '<(webrtc_root)/build/android/AndroidManifest.xml',
261            'suppressions_file': '<(webrtc_root)/build/android/suppressions.xml',
262            'chromium_code': 1,
263            'java_in_dir': 'app/webrtc/java',
264            'webrtc_base_dir': '<(webrtc_root)/base',
265            'webrtc_modules_dir': '<(webrtc_root)/modules',
266            'additional_src_dirs' : [
267              'app/webrtc/java/android',
268              '<(webrtc_base_dir)/java/src',
269              '<(webrtc_modules_dir)/audio_device/android/java/src',
270              '<(webrtc_modules_dir)/video_render/android/java/src',
271            ],
272          },
273          'includes': ['../build/java.gypi'],
274        }, # libjingle_peerconnection_java
275      ]
276    }],
277    ['OS=="ios" or (OS=="mac" and target_arch!="ia32")', {
278      # The >= 10.7 above is required for ARC.
279      'targets': [
280        {
281          'target_name': 'libjingle_peerconnection_objc',
282          'type': 'static_library',
283          'dependencies': [
284            'libjingle_peerconnection',
285          ],
286          'sources': [
287            'app/webrtc/objc/RTCAudioTrack+Internal.h',
288            'app/webrtc/objc/RTCAudioTrack.mm',
289            'app/webrtc/objc/RTCDataChannel+Internal.h',
290            'app/webrtc/objc/RTCDataChannel.mm',
291            'app/webrtc/objc/RTCEnumConverter.h',
292            'app/webrtc/objc/RTCEnumConverter.mm',
293            'app/webrtc/objc/RTCFileLogger.mm',
294            'app/webrtc/objc/RTCI420Frame+Internal.h',
295            'app/webrtc/objc/RTCI420Frame.mm',
296            'app/webrtc/objc/RTCICECandidate+Internal.h',
297            'app/webrtc/objc/RTCICECandidate.mm',
298            'app/webrtc/objc/RTCICEServer+Internal.h',
299            'app/webrtc/objc/RTCICEServer.mm',
300            'app/webrtc/objc/RTCLogging.mm',
301            'app/webrtc/objc/RTCMediaConstraints+Internal.h',
302            'app/webrtc/objc/RTCMediaConstraints.mm',
303            'app/webrtc/objc/RTCMediaConstraintsNative.cc',
304            'app/webrtc/objc/RTCMediaConstraintsNative.h',
305            'app/webrtc/objc/RTCMediaSource+Internal.h',
306            'app/webrtc/objc/RTCMediaSource.mm',
307            'app/webrtc/objc/RTCMediaStream+Internal.h',
308            'app/webrtc/objc/RTCMediaStream.mm',
309            'app/webrtc/objc/RTCMediaStreamTrack+Internal.h',
310            'app/webrtc/objc/RTCMediaStreamTrack.mm',
311            'app/webrtc/objc/RTCOpenGLVideoRenderer.mm',
312            'app/webrtc/objc/RTCPair.m',
313            'app/webrtc/objc/RTCPeerConnection+Internal.h',
314            'app/webrtc/objc/RTCPeerConnection.mm',
315            'app/webrtc/objc/RTCPeerConnectionFactory.mm',
316            'app/webrtc/objc/RTCPeerConnectionInterface+Internal.h',
317            'app/webrtc/objc/RTCPeerConnectionInterface.mm',
318            'app/webrtc/objc/RTCPeerConnectionObserver.h',
319            'app/webrtc/objc/RTCPeerConnectionObserver.mm',
320            'app/webrtc/objc/RTCSessionDescription+Internal.h',
321            'app/webrtc/objc/RTCSessionDescription.mm',
322            'app/webrtc/objc/RTCStatsReport+Internal.h',
323            'app/webrtc/objc/RTCStatsReport.mm',
324            'app/webrtc/objc/RTCVideoCapturer+Internal.h',
325            'app/webrtc/objc/RTCVideoCapturer.mm',
326            'app/webrtc/objc/RTCVideoRendererAdapter.h',
327            'app/webrtc/objc/RTCVideoRendererAdapter.mm',
328            'app/webrtc/objc/RTCVideoSource+Internal.h',
329            'app/webrtc/objc/RTCVideoSource.mm',
330            'app/webrtc/objc/RTCVideoTrack+Internal.h',
331            'app/webrtc/objc/RTCVideoTrack.mm',
332            'app/webrtc/objc/public/RTCAudioSource.h',
333            'app/webrtc/objc/public/RTCAudioTrack.h',
334            'app/webrtc/objc/public/RTCDataChannel.h',
335            'app/webrtc/objc/public/RTCFileLogger.h',
336            'app/webrtc/objc/public/RTCI420Frame.h',
337            'app/webrtc/objc/public/RTCICECandidate.h',
338            'app/webrtc/objc/public/RTCICEServer.h',
339            'app/webrtc/objc/public/RTCLogging.h',
340            'app/webrtc/objc/public/RTCMediaConstraints.h',
341            'app/webrtc/objc/public/RTCMediaSource.h',
342            'app/webrtc/objc/public/RTCMediaStream.h',
343            'app/webrtc/objc/public/RTCMediaStreamTrack.h',
344            'app/webrtc/objc/public/RTCOpenGLVideoRenderer.h',
345            'app/webrtc/objc/public/RTCPair.h',
346            'app/webrtc/objc/public/RTCPeerConnection.h',
347            'app/webrtc/objc/public/RTCPeerConnectionDelegate.h',
348            'app/webrtc/objc/public/RTCPeerConnectionFactory.h',
349            'app/webrtc/objc/public/RTCPeerConnectionInterface.h',
350            'app/webrtc/objc/public/RTCSessionDescription.h',
351            'app/webrtc/objc/public/RTCSessionDescriptionDelegate.h',
352            'app/webrtc/objc/public/RTCStatsDelegate.h',
353            'app/webrtc/objc/public/RTCStatsReport.h',
354            'app/webrtc/objc/public/RTCTypes.h',
355            'app/webrtc/objc/public/RTCVideoCapturer.h',
356            'app/webrtc/objc/public/RTCVideoRenderer.h',
357            'app/webrtc/objc/public/RTCVideoSource.h',
358            'app/webrtc/objc/public/RTCVideoTrack.h',
359          ],
360          'direct_dependent_settings': {
361            'include_dirs': [
362              '<(DEPTH)/talk/app/webrtc/objc/public',
363            ],
364          },
365          'include_dirs': [
366            '<(DEPTH)/talk/app/webrtc',
367            '<(DEPTH)/talk/app/webrtc/objc',
368            '<(DEPTH)/talk/app/webrtc/objc/public',
369          ],
370          'link_settings': {
371            'libraries': [
372              '-lstdc++',
373            ],
374          },
375          'all_dependent_settings': {
376            'xcode_settings': {
377              'CLANG_ENABLE_OBJC_ARC': 'YES',
378            },
379          },
380          'xcode_settings': {
381            'CLANG_ENABLE_OBJC_ARC': 'YES',
382            # common.gypi enables this for mac but we want this to be disabled
383            # like it is for ios.
384            'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO',
385            # Disabled due to failing when compiled with -Wall, see
386            # https://bugs.chromium.org/p/webrtc/issues/detail?id=5397
387            'WARNING_CFLAGS': ['-Wno-unused-property-ivar'],
388          },
389          'conditions': [
390            ['OS=="ios"', {
391              'sources': [
392                'app/webrtc/objc/avfoundationvideocapturer.h',
393                'app/webrtc/objc/avfoundationvideocapturer.mm',
394                'app/webrtc/objc/RTCAVFoundationVideoSource+Internal.h',
395                'app/webrtc/objc/RTCAVFoundationVideoSource.mm',
396                'app/webrtc/objc/RTCEAGLVideoView.m',
397                'app/webrtc/objc/public/RTCEAGLVideoView.h',
398                'app/webrtc/objc/public/RTCAVFoundationVideoSource.h',
399              ],
400              'dependencies': [
401                '<(webrtc_root)/base/base.gyp:rtc_base_objc',
402              ],
403              'link_settings': {
404                'xcode_settings': {
405                  'OTHER_LDFLAGS': [
406                    '-framework CoreGraphics',
407                    '-framework GLKit',
408                  ],
409                },
410              },
411            }],
412            ['OS=="mac"', {
413              'sources': [
414                'app/webrtc/objc/RTCNSGLVideoView.m',
415                'app/webrtc/objc/public/RTCNSGLVideoView.h',
416              ],
417              'xcode_settings': {
418                # Need to build against 10.7 framework for full ARC support
419                # on OSX.
420                'MACOSX_DEPLOYMENT_TARGET' : '10.7',
421                # RTCVideoTrack.mm uses code with partial availability.
422                # https://code.google.com/p/webrtc/issues/detail?id=4695
423                'WARNING_CFLAGS!': ['-Wpartial-availability'],
424              },
425              'link_settings': {
426                'xcode_settings': {
427                  'OTHER_LDFLAGS': [
428                    '-framework Cocoa',
429                  ],
430                },
431              },
432            }],
433          ],
434        },  # target libjingle_peerconnection_objc
435      ],
436    }],
437  ],
438
439  'targets': [
440    {
441      'target_name': 'libjingle',
442      'type': 'none',
443      'dependencies': [
444        '<(webrtc_root)/base/base.gyp:rtc_base',
445      ],
446      'conditions': [
447        ['build_json==1', {
448          'dependencies': [
449            '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
450          ],
451          'export_dependent_settings': [
452            '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
453          ],
454        }],
455        ['build_expat==1', {
456          'dependencies': [
457            '<(DEPTH)/third_party/expat/expat.gyp:expat',
458          ],
459          'export_dependent_settings': [
460            '<(DEPTH)/third_party/expat/expat.gyp:expat',
461          ],
462        }],
463      ],
464    },  # target libjingle
465    {
466      'target_name': 'libjingle_media',
467      'type': 'static_library',
468      'dependencies': [
469        '<(webrtc_root)/common.gyp:webrtc_common',
470        '<(webrtc_root)/modules/modules.gyp:video_render_module',
471        '<(webrtc_root)/webrtc.gyp:webrtc',
472        '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine',
473        '<(webrtc_root)/sound/sound.gyp:rtc_sound',
474        '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default',
475        '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
476        '<(webrtc_root)/libjingle/xmllite/xmllite.gyp:rtc_xmllite',
477        '<(webrtc_root)/libjingle/xmpp/xmpp.gyp:rtc_xmpp',
478        '<(webrtc_root)/p2p/p2p.gyp:rtc_p2p',
479        'libjingle',
480      ],
481      'direct_dependent_settings': {
482        'include_dirs': [
483          '<(libyuv_dir)/include',
484        ],
485      },
486      'sources': [
487        'media/base/audioframe.h',
488        'media/base/audiorenderer.h',
489        'media/base/capturemanager.cc',
490        'media/base/capturemanager.h',
491        'media/base/capturerenderadapter.cc',
492        'media/base/capturerenderadapter.h',
493        'media/base/codec.cc',
494        'media/base/codec.h',
495        'media/base/constants.cc',
496        'media/base/constants.h',
497        'media/base/cpuid.cc',
498        'media/base/cpuid.h',
499        'media/base/cryptoparams.h',
500        'media/base/device.h',
501        'media/base/fakescreencapturerfactory.h',
502        'media/base/hybriddataengine.h',
503        'media/base/mediachannel.h',
504        'media/base/mediacommon.h',
505        'media/base/mediaengine.cc',
506        'media/base/mediaengine.h',
507        'media/base/rtpdataengine.cc',
508        'media/base/rtpdataengine.h',
509        'media/base/rtpdump.cc',
510        'media/base/rtpdump.h',
511        'media/base/rtputils.cc',
512        'media/base/rtputils.h',
513        'media/base/screencastid.h',
514        'media/base/streamparams.cc',
515        'media/base/streamparams.h',
516        'media/base/videoadapter.cc',
517        'media/base/videoadapter.h',
518        'media/base/videocapturer.cc',
519        'media/base/videocapturer.h',
520        'media/base/videocapturerfactory.h',
521        'media/base/videocommon.cc',
522        'media/base/videocommon.h',
523        'media/base/videoframe.cc',
524        'media/base/videoframe.h',
525        'media/base/videoframefactory.cc',
526        'media/base/videoframefactory.h',
527        'media/base/videorenderer.h',
528        'media/base/yuvframegenerator.cc',
529        'media/base/yuvframegenerator.h',
530        'media/devices/deviceinfo.h',
531        'media/devices/devicemanager.cc',
532        'media/devices/devicemanager.h',
533        'media/devices/dummydevicemanager.h',
534        'media/devices/filevideocapturer.cc',
535        'media/devices/filevideocapturer.h',
536        'media/devices/videorendererfactory.h',
537        'media/devices/yuvframescapturer.cc',
538        'media/devices/yuvframescapturer.h',
539        'media/sctp/sctpdataengine.cc',
540        'media/sctp/sctpdataengine.h',
541        'media/webrtc/simulcast.cc',
542        'media/webrtc/simulcast.h',
543        'media/webrtc/webrtccommon.h',
544        'media/webrtc/webrtcmediaengine.cc',
545        'media/webrtc/webrtcmediaengine.h',
546        'media/webrtc/webrtcmediaengine.cc',
547        'media/webrtc/webrtcvideocapturer.cc',
548        'media/webrtc/webrtcvideocapturer.h',
549        'media/webrtc/webrtcvideocapturerfactory.h',
550        'media/webrtc/webrtcvideocapturerfactory.cc',
551        'media/webrtc/webrtcvideodecoderfactory.h',
552        'media/webrtc/webrtcvideoencoderfactory.h',
553        'media/webrtc/webrtcvideoengine2.cc',
554        'media/webrtc/webrtcvideoengine2.h',
555        'media/webrtc/webrtcvideoframe.cc',
556        'media/webrtc/webrtcvideoframe.h',
557        'media/webrtc/webrtcvideoframefactory.cc',
558        'media/webrtc/webrtcvideoframefactory.h',
559        'media/webrtc/webrtcvoe.h',
560        'media/webrtc/webrtcvoiceengine.cc',
561        'media/webrtc/webrtcvoiceengine.h',
562      ],
563      'conditions': [
564        ['build_libyuv==1', {
565          'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',],
566        }],
567        ['build_usrsctp==1', {
568          'include_dirs': [
569            # TODO(jiayl): move this into the direct_dependent_settings of
570            # usrsctp.gyp.
571            '<(DEPTH)/third_party/usrsctp/usrsctplib',
572          ],
573          'dependencies': [
574            '<(DEPTH)/third_party/usrsctp/usrsctp.gyp:usrsctplib',
575          ],
576        }],
577        ['build_with_chromium==1', {
578          'dependencies': [
579            '<(webrtc_root)/modules/modules.gyp:video_capture',
580            '<(webrtc_root)/modules/modules.gyp:video_render',
581          ],
582        }, {
583          'dependencies': [
584            '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl',
585            '<(webrtc_root)/modules/modules.gyp:video_render_module_internal_impl',
586          ],
587        }],
588        ['OS=="linux"', {
589          'sources': [
590            'media/devices/libudevsymboltable.cc',
591            'media/devices/libudevsymboltable.h',
592            'media/devices/linuxdeviceinfo.cc',
593            'media/devices/linuxdevicemanager.cc',
594            'media/devices/linuxdevicemanager.h',
595            'media/devices/v4llookup.cc',
596            'media/devices/v4llookup.h',
597          ],
598          'conditions': [
599            ['use_gtk==1', {
600              'sources': [
601                'media/devices/gtkvideorenderer.cc',
602                'media/devices/gtkvideorenderer.h',
603              ],
604              'cflags': [
605                '<!@(pkg-config --cflags gobject-2.0 gthread-2.0 gtk+-2.0)',
606              ],
607            }],
608          ],
609          'include_dirs': [
610            'third_party/libudev'
611          ],
612          'libraries': [
613            '-lrt',
614          ],
615        }],
616        ['OS=="win"', {
617          'sources': [
618            'media/devices/gdivideorenderer.cc',
619            'media/devices/gdivideorenderer.h',
620            'media/devices/win32deviceinfo.cc',
621            'media/devices/win32devicemanager.cc',
622            'media/devices/win32devicemanager.h',
623          ],
624          'msvs_settings': {
625            'VCLibrarianTool': {
626              'AdditionalDependencies': [
627                'd3d9.lib',
628                'gdi32.lib',
629                'strmiids.lib',
630                'winmm.lib',
631              ],
632            },
633          },
634        }],
635        ['OS=="mac"', {
636          'sources': [
637            'media/devices/macdeviceinfo.cc',
638            'media/devices/macdevicemanager.cc',
639            'media/devices/macdevicemanager.h',
640            'media/devices/macdevicemanagermm.mm',
641          ],
642          'conditions': [
643            ['target_arch=="ia32"', {
644              'sources': [
645                'media/devices/carbonvideorenderer.cc',
646                'media/devices/carbonvideorenderer.h',
647              ],
648              'link_settings': {
649                'xcode_settings': {
650                  'OTHER_LDFLAGS': [
651                    '-framework Carbon',
652                  ],
653                },
654              },
655            }],
656          ],
657          'xcode_settings': {
658            'WARNING_CFLAGS': [
659              # TODO(ronghuawu): Update macdevicemanager.cc to stop using
660              # deprecated functions and remove this flag.
661              '-Wno-deprecated-declarations',
662            ],
663            # Disable partial availability warning to prevent errors
664            # in macdevicemanagermm.mm using AVFoundation.
665            # https://code.google.com/p/webrtc/issues/detail?id=4695
666            'WARNING_CFLAGS!': ['-Wpartial-availability'],
667          },
668          'link_settings': {
669            'xcode_settings': {
670              'OTHER_LDFLAGS': [
671                '-weak_framework AVFoundation',
672                '-framework Cocoa',
673                '-framework CoreAudio',
674                '-framework CoreVideo',
675                '-framework OpenGL',
676                '-framework QTKit',
677              ],
678            },
679          },
680        }],
681        ['OS=="ios"', {
682          'sources': [
683            'media/devices/mobiledevicemanager.cc',
684          ],
685          'include_dirs': [
686            # TODO(sjlee) Remove when vp8 is building for iOS.  vp8 pulls in
687            # libjpeg which pulls in libyuv which currently disabled.
688            '../third_party/libyuv/include',
689          ],
690        }],
691        ['OS=="android"', {
692          'sources': [
693            'media/devices/mobiledevicemanager.cc',
694          ],
695        }],
696      ],
697    },  # target libjingle_media
698    {
699      'target_name': 'libjingle_p2p',
700      'type': 'static_library',
701      'dependencies': [
702        'libjingle',
703        'libjingle_media',
704      ],
705      'conditions': [
706        ['build_libsrtp==1', {
707          'dependencies': [
708            '<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp',
709          ],
710        }],
711      ],
712      'include_dirs': [
713        '<(DEPTH)/testing/gtest/include',
714      ],
715      'include_dirs!': [
716        '<(DEPTH)/webrtc',
717      ],
718      'direct_dependent_settings': {
719        'include_dirs': [
720          '<(DEPTH)/testing/gtest/include',
721        ],
722        'include_dirs!': [
723          '<(DEPTH)/webrtc',
724        ],
725      },
726      'sources': [
727        'session/media/audiomonitor.cc',
728        'session/media/audiomonitor.h',
729        'session/media/bundlefilter.cc',
730        'session/media/bundlefilter.h',
731        'session/media/channel.cc',
732        'session/media/channel.h',
733        'session/media/channelmanager.cc',
734        'session/media/channelmanager.h',
735        'session/media/currentspeakermonitor.cc',
736        'session/media/currentspeakermonitor.h',
737        'session/media/mediamonitor.cc',
738        'session/media/mediamonitor.h',
739        'session/media/mediasession.cc',
740        'session/media/mediasession.h',
741        'session/media/mediasink.h',
742        'session/media/rtcpmuxfilter.cc',
743        'session/media/rtcpmuxfilter.h',
744        'session/media/srtpfilter.cc',
745        'session/media/srtpfilter.h',
746        'session/media/voicechannel.h',
747      ],
748    },  # target libjingle_p2p
749    {
750      'target_name': 'libjingle_peerconnection',
751      'type': 'static_library',
752      'dependencies': [
753        'libjingle',
754        'libjingle_media',
755        'libjingle_p2p',
756      ],
757      'sources': [
758        'app/webrtc/audiotrack.cc',
759        'app/webrtc/audiotrack.h',
760        'app/webrtc/datachannel.cc',
761        'app/webrtc/datachannel.h',
762        'app/webrtc/datachannelinterface.h',
763        'app/webrtc/dtlsidentitystore.cc',
764        'app/webrtc/dtlsidentitystore.h',
765        'app/webrtc/dtmfsender.cc',
766        'app/webrtc/dtmfsender.h',
767        'app/webrtc/dtmfsenderinterface.h',
768        'app/webrtc/jsep.h',
769        'app/webrtc/jsepicecandidate.cc',
770        'app/webrtc/jsepicecandidate.h',
771        'app/webrtc/jsepsessiondescription.cc',
772        'app/webrtc/jsepsessiondescription.h',
773        'app/webrtc/localaudiosource.cc',
774        'app/webrtc/localaudiosource.h',
775        'app/webrtc/mediaconstraintsinterface.cc',
776        'app/webrtc/mediaconstraintsinterface.h',
777        'app/webrtc/mediacontroller.cc',
778        'app/webrtc/mediacontroller.h',
779        'app/webrtc/mediastream.cc',
780        'app/webrtc/mediastream.h',
781        'app/webrtc/mediastreaminterface.h',
782        'app/webrtc/mediastreamobserver.cc',
783        'app/webrtc/mediastreamobserver.h',
784        'app/webrtc/mediastreamprovider.h',
785        'app/webrtc/mediastreamproxy.h',
786        'app/webrtc/mediastreamtrack.h',
787        'app/webrtc/mediastreamtrackproxy.h',
788        'app/webrtc/notifier.h',
789        'app/webrtc/peerconnection.cc',
790        'app/webrtc/peerconnection.h',
791        'app/webrtc/peerconnectionfactory.cc',
792        'app/webrtc/peerconnectionfactory.h',
793        'app/webrtc/peerconnectionfactoryproxy.h',
794        'app/webrtc/peerconnectioninterface.h',
795        'app/webrtc/peerconnectionproxy.h',
796        'app/webrtc/proxy.h',
797        'app/webrtc/remoteaudiosource.cc',
798        'app/webrtc/remoteaudiosource.h',
799        'app/webrtc/remotevideocapturer.cc',
800        'app/webrtc/remotevideocapturer.h',
801        'app/webrtc/rtpreceiver.cc',
802        'app/webrtc/rtpreceiver.h',
803        'app/webrtc/rtpreceiverinterface.h',
804        'app/webrtc/rtpsender.cc',
805        'app/webrtc/rtpsender.h',
806        'app/webrtc/rtpsenderinterface.h',
807        'app/webrtc/sctputils.cc',
808        'app/webrtc/sctputils.h',
809        'app/webrtc/statscollector.cc',
810        'app/webrtc/statscollector.h',
811        'app/webrtc/statstypes.cc',
812        'app/webrtc/statstypes.h',
813        'app/webrtc/streamcollection.h',
814        'app/webrtc/videosource.cc',
815        'app/webrtc/videosource.h',
816        'app/webrtc/videosourceinterface.h',
817        'app/webrtc/videosourceproxy.h',
818        'app/webrtc/videotrack.cc',
819        'app/webrtc/videotrack.h',
820        'app/webrtc/videotrackrenderers.cc',
821        'app/webrtc/videotrackrenderers.h',
822        'app/webrtc/webrtcsdp.cc',
823        'app/webrtc/webrtcsdp.h',
824        'app/webrtc/webrtcsession.cc',
825        'app/webrtc/webrtcsession.h',
826        'app/webrtc/webrtcsessiondescriptionfactory.cc',
827        'app/webrtc/webrtcsessiondescriptionfactory.h',
828      ],
829    },  # target libjingle_peerconnection
830  ],
831}
832