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{
29  'includes': ['build/common.gypi'],
30  'conditions': [
31    ['os_posix == 1 and OS != "mac" and OS != "ios"', {
32     'conditions': [
33       ['sysroot!=""', {
34         'variables': {
35           'pkg-config': '../../../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"',
36         },
37       }, {
38         'variables': {
39           'pkg-config': 'pkg-config'
40         },
41       }],
42     ],
43    }],
44    ['OS=="linux" or OS=="android"', {
45      'targets': [
46        {
47          'target_name': 'libjingle_peerconnection_so',
48          'type': 'loadable_module',
49          'dependencies': [
50            'libjingle_peerconnection',
51            '<(DEPTH)/third_party/icu/icu.gyp:icuuc',
52          ],
53          'sources': [
54            'app/webrtc/java/jni/peerconnection_jni.cc'
55          ],
56          'include_dirs': [
57            '<(DEPTH)/third_party/libyuv/include',
58          ],
59          'conditions': [
60            ['OS=="linux"', {
61              'defines': [
62                'HAVE_GTK',
63              ],
64              'include_dirs': [
65                '<(java_home)/include',
66                '<(java_home)/include/linux',
67              ],
68              'link_settings': {
69                'libraries': [
70                  '<!@(pkg-config --libs-only-l gobject-2.0 gthread-2.0'
71                      ' gtk+-2.0)',
72                ],
73              },
74            }],
75          ],
76        },
77        {
78          'target_name': 'libjingle_peerconnection_jar',
79          'type': 'none',
80          'actions': [
81            {
82              'variables': {
83                'java_src_dir': 'app/webrtc/java/src',
84                'webrtc_modules_dir': '<(webrtc_root)/modules',
85                'build_jar_log': '<(INTERMEDIATE_DIR)/build_jar.log',
86                'peerconnection_java_files': [
87                  'app/webrtc/java/src/org/webrtc/AudioSource.java',
88                  'app/webrtc/java/src/org/webrtc/AudioTrack.java',
89                  'app/webrtc/java/src/org/webrtc/DataChannel.java',
90                  'app/webrtc/java/src/org/webrtc/IceCandidate.java',
91                  'app/webrtc/java/src/org/webrtc/Logging.java',
92                  'app/webrtc/java/src/org/webrtc/MediaConstraints.java',
93                  'app/webrtc/java/src/org/webrtc/MediaSource.java',
94                  'app/webrtc/java/src/org/webrtc/MediaStream.java',
95                  'app/webrtc/java/src/org/webrtc/MediaStreamTrack.java',
96                  'app/webrtc/java/src/org/webrtc/PeerConnectionFactory.java',
97                  'app/webrtc/java/src/org/webrtc/PeerConnection.java',
98                  'app/webrtc/java/src/org/webrtc/SdpObserver.java',
99                  'app/webrtc/java/src/org/webrtc/StatsObserver.java',
100                  'app/webrtc/java/src/org/webrtc/StatsReport.java',
101                  'app/webrtc/java/src/org/webrtc/SessionDescription.java',
102                  'app/webrtc/java/src/org/webrtc/VideoCapturer.java',
103                  'app/webrtc/java/src/org/webrtc/VideoRenderer.java',
104                  'app/webrtc/java/src/org/webrtc/VideoSource.java',
105                  'app/webrtc/java/src/org/webrtc/VideoTrack.java',
106                ],
107                # TODO(fischman): extract this into a webrtc gyp var that can be
108                # included here, or better yet, build a proper .jar in webrtc
109                # and include it here.
110                'android_java_files': [
111                  'app/webrtc/java/android/org/webrtc/VideoRendererGui.java',
112                  'app/webrtc/java/src/org/webrtc/MediaCodecVideoEncoder.java',
113                  'app/webrtc/java/src/org/webrtc/MediaCodecVideoDecoder.java',
114                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/AudioManagerAndroid.java',
115                  '<(webrtc_modules_dir)/video_capture/android/java/src/org/webrtc/videoengine/VideoCaptureAndroid.java',
116                  '<(webrtc_modules_dir)/video_capture/android/java/src/org/webrtc/videoengine/VideoCaptureDeviceInfoAndroid.java',
117                  '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViEAndroidGLES20.java',
118                  '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViERenderer.java',
119                  '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViESurfaceRenderer.java',
120                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java',
121                  '<(webrtc_modules_dir)/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java',
122                ],
123              },
124              'action_name': 'create_jar',
125              'inputs': [
126                'build/build_jar.sh',
127                '<@(java_files)',
128              ],
129              'outputs': [
130                '<(PRODUCT_DIR)/libjingle_peerconnection.jar',
131              ],
132              'conditions': [
133                ['OS=="android"', {
134                  'variables': {
135                    'java_files': ['<@(peerconnection_java_files)', '<@(android_java_files)'],
136                    'build_classpath': '<(java_src_dir):<(DEPTH)/third_party/android_tools/sdk/platforms/android-<(android_sdk_version)/android.jar',
137                  },
138                }, {
139                  'variables': {
140                    'java_files': ['<@(peerconnection_java_files)'],
141                    'build_classpath': '<(java_src_dir)',
142                  },
143                }],
144              ],
145              'action': [
146                'bash', '-ec',
147                'mkdir -p <(INTERMEDIATE_DIR) && '
148                '{ build/build_jar.sh <(java_home) <@(_outputs) '
149                '      <(INTERMEDIATE_DIR)/build_jar.tmp '
150                '      <(build_classpath) <@(java_files) '
151                '      > <(build_jar_log) 2>&1 || '
152                '  { cat <(build_jar_log) ; exit 1; } }'
153              ],
154            },
155          ],
156          'dependencies': [
157            'libjingle_peerconnection_so',
158          ],
159        },
160      ],
161    }],
162    ['OS=="ios" or (OS=="mac" and target_arch!="ia32" and mac_sdk>="10.7")', {
163      # The >= 10.7 above is required for ARC.
164      'targets': [
165        {
166          'target_name': 'libjingle_peerconnection_objc',
167          'type': 'static_library',
168          'dependencies': [
169            'libjingle_peerconnection',
170          ],
171          'sources': [
172            'app/webrtc/objc/RTCAudioTrack+Internal.h',
173            'app/webrtc/objc/RTCAudioTrack.mm',
174            'app/webrtc/objc/RTCDataChannel+Internal.h',
175            'app/webrtc/objc/RTCDataChannel.mm',
176            'app/webrtc/objc/RTCEnumConverter.h',
177            'app/webrtc/objc/RTCEnumConverter.mm',
178            'app/webrtc/objc/RTCI420Frame+Internal.h',
179            'app/webrtc/objc/RTCI420Frame.mm',
180            'app/webrtc/objc/RTCICECandidate+Internal.h',
181            'app/webrtc/objc/RTCICECandidate.mm',
182            'app/webrtc/objc/RTCICEServer+Internal.h',
183            'app/webrtc/objc/RTCICEServer.mm',
184            'app/webrtc/objc/RTCMediaConstraints+Internal.h',
185            'app/webrtc/objc/RTCMediaConstraints.mm',
186            'app/webrtc/objc/RTCMediaConstraintsNative.cc',
187            'app/webrtc/objc/RTCMediaConstraintsNative.h',
188            'app/webrtc/objc/RTCMediaSource+Internal.h',
189            'app/webrtc/objc/RTCMediaSource.mm',
190            'app/webrtc/objc/RTCMediaStream+Internal.h',
191            'app/webrtc/objc/RTCMediaStream.mm',
192            'app/webrtc/objc/RTCMediaStreamTrack+Internal.h',
193            'app/webrtc/objc/RTCMediaStreamTrack.mm',
194            'app/webrtc/objc/RTCOpenGLVideoRenderer.mm',
195            'app/webrtc/objc/RTCPair.m',
196            'app/webrtc/objc/RTCPeerConnection+Internal.h',
197            'app/webrtc/objc/RTCPeerConnection.mm',
198            'app/webrtc/objc/RTCPeerConnectionFactory.mm',
199            'app/webrtc/objc/RTCPeerConnectionObserver.h',
200            'app/webrtc/objc/RTCPeerConnectionObserver.mm',
201            'app/webrtc/objc/RTCSessionDescription+Internal.h',
202            'app/webrtc/objc/RTCSessionDescription.mm',
203            'app/webrtc/objc/RTCStatsReport+Internal.h',
204            'app/webrtc/objc/RTCStatsReport.mm',
205            'app/webrtc/objc/RTCVideoCapturer+Internal.h',
206            'app/webrtc/objc/RTCVideoCapturer.mm',
207            'app/webrtc/objc/RTCVideoRenderer+Internal.h',
208            'app/webrtc/objc/RTCVideoRenderer.mm',
209            'app/webrtc/objc/RTCVideoSource+Internal.h',
210            'app/webrtc/objc/RTCVideoSource.mm',
211            'app/webrtc/objc/RTCVideoTrack+Internal.h',
212            'app/webrtc/objc/RTCVideoTrack.mm',
213            'app/webrtc/objc/public/RTCAudioSource.h',
214            'app/webrtc/objc/public/RTCAudioTrack.h',
215            'app/webrtc/objc/public/RTCDataChannel.h',
216            'app/webrtc/objc/public/RTCI420Frame.h',
217            'app/webrtc/objc/public/RTCICECandidate.h',
218            'app/webrtc/objc/public/RTCICEServer.h',
219            'app/webrtc/objc/public/RTCMediaConstraints.h',
220            'app/webrtc/objc/public/RTCMediaSource.h',
221            'app/webrtc/objc/public/RTCMediaStream.h',
222            'app/webrtc/objc/public/RTCMediaStreamTrack.h',
223            'app/webrtc/objc/public/RTCOpenGLVideoRenderer.h',
224            'app/webrtc/objc/public/RTCPair.h',
225            'app/webrtc/objc/public/RTCPeerConnection.h',
226            'app/webrtc/objc/public/RTCPeerConnectionDelegate.h',
227            'app/webrtc/objc/public/RTCPeerConnectionFactory.h',
228            'app/webrtc/objc/public/RTCSessionDescription.h',
229            'app/webrtc/objc/public/RTCSessionDescriptionDelegate.h',
230            'app/webrtc/objc/public/RTCStatsDelegate.h',
231            'app/webrtc/objc/public/RTCStatsReport.h',
232            'app/webrtc/objc/public/RTCTypes.h',
233            'app/webrtc/objc/public/RTCVideoCapturer.h',
234            'app/webrtc/objc/public/RTCVideoRenderer.h',
235            'app/webrtc/objc/public/RTCVideoSource.h',
236            'app/webrtc/objc/public/RTCVideoTrack.h',
237          ],
238          'direct_dependent_settings': {
239            'include_dirs': [
240              '<(DEPTH)/talk/app/webrtc/objc/public',
241            ],
242          },
243          'include_dirs': [
244            '<(DEPTH)/talk/app/webrtc',
245            '<(DEPTH)/talk/app/webrtc/objc',
246            '<(DEPTH)/talk/app/webrtc/objc/public',
247          ],
248          'link_settings': {
249            'libraries': [
250              '-lstdc++',
251            ],
252          },
253          'xcode_settings': {
254            'CLANG_ENABLE_OBJC_ARC': 'YES',
255            # common.gypi enables this for mac but we want this to be disabled
256            # like it is for ios.
257            'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO',
258          },
259          'conditions': [
260            ['OS=="ios"', {
261              'sources': [
262                'app/webrtc/objc/RTCEAGLVideoView+Internal.h',
263                'app/webrtc/objc/RTCEAGLVideoView.m',
264                'app/webrtc/objc/public/RTCEAGLVideoView.h',
265              ],
266              'link_settings': {
267                'xcode_settings': {
268                  'OTHER_LDFLAGS': [
269                    '-framework CoreGraphics',
270                    '-framework GLKit',
271                  ],
272                },
273              },
274            }],
275            ['OS=="mac"', {
276              'sources': [
277                'app/webrtc/objc/RTCNSGLVideoView.m',
278                'app/webrtc/objc/public/RTCNSGLVideoView.h',
279              ],
280              'xcode_settings': {
281                # Need to build against 10.7 framework for full ARC support
282                # on OSX.
283                'MACOSX_DEPLOYMENT_TARGET' : '10.7',
284              },
285              'link_settings': {
286                'xcode_settings': {
287                  'OTHER_LDFLAGS': [
288                    '-framework Cocoa',
289                  ],
290                },
291              },
292            }],
293          ],
294        },  # target libjingle_peerconnection_objc
295      ],
296    }],
297  ],
298
299  'targets': [
300    {
301      'target_name': 'libjingle',
302      'type': 'static_library',
303      'dependencies': [
304        '<(DEPTH)/third_party/expat/expat.gyp:expat',
305        '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
306        '<(webrtc_root)/base/base.gyp:rtc_base',
307      ],
308      'export_dependent_settings': [
309        '<(DEPTH)/third_party/expat/expat.gyp:expat',
310        '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp',
311      ],
312      'sources': [
313        'xmpp/asyncsocket.h',
314        'xmpp/chatroommodule.h',
315        'xmpp/chatroommoduleimpl.cc',
316        'xmpp/constants.cc',
317        'xmpp/constants.h',
318        'xmpp/discoitemsquerytask.cc',
319        'xmpp/discoitemsquerytask.h',
320        'xmpp/hangoutpubsubclient.cc',
321        'xmpp/hangoutpubsubclient.h',
322        'xmpp/iqtask.cc',
323        'xmpp/iqtask.h',
324        'xmpp/jid.cc',
325        'xmpp/jid.h',
326        'xmpp/module.h',
327        'xmpp/moduleimpl.cc',
328        'xmpp/moduleimpl.h',
329        'xmpp/mucroomconfigtask.cc',
330        'xmpp/mucroomconfigtask.h',
331        'xmpp/mucroomdiscoverytask.cc',
332        'xmpp/mucroomdiscoverytask.h',
333        'xmpp/mucroomlookuptask.cc',
334        'xmpp/mucroomlookuptask.h',
335        'xmpp/mucroomuniquehangoutidtask.cc',
336        'xmpp/mucroomuniquehangoutidtask.h',
337        'xmpp/pingtask.cc',
338        'xmpp/pingtask.h',
339        'xmpp/plainsaslhandler.h',
340        'xmpp/presenceouttask.cc',
341        'xmpp/presenceouttask.h',
342        'xmpp/presencereceivetask.cc',
343        'xmpp/presencereceivetask.h',
344        'xmpp/presencestatus.cc',
345        'xmpp/presencestatus.h',
346        'xmpp/prexmppauth.h',
347        'xmpp/pubsub_task.cc',
348        'xmpp/pubsub_task.h',
349        'xmpp/pubsubclient.cc',
350        'xmpp/pubsubclient.h',
351        'xmpp/pubsubstateclient.cc',
352        'xmpp/pubsubstateclient.h',
353        'xmpp/pubsubtasks.cc',
354        'xmpp/pubsubtasks.h',
355        'xmpp/receivetask.cc',
356        'xmpp/receivetask.h',
357        'xmpp/rostermodule.h',
358        'xmpp/rostermoduleimpl.cc',
359        'xmpp/rostermoduleimpl.h',
360        'xmpp/saslcookiemechanism.h',
361        'xmpp/saslhandler.h',
362        'xmpp/saslmechanism.cc',
363        'xmpp/saslmechanism.h',
364        'xmpp/saslplainmechanism.h',
365        'xmpp/xmppauth.cc',
366        'xmpp/xmppauth.h',
367        'xmpp/xmppclient.cc',
368        'xmpp/xmppclient.h',
369        'xmpp/xmppclientsettings.h',
370        'xmpp/xmppengine.h',
371        'xmpp/xmppengineimpl.cc',
372        'xmpp/xmppengineimpl.h',
373        'xmpp/xmppengineimpl_iq.cc',
374        'xmpp/xmpplogintask.cc',
375        'xmpp/xmpplogintask.h',
376        'xmpp/xmpppump.cc',
377        'xmpp/xmpppump.h',
378        'xmpp/xmppsocket.cc',
379        'xmpp/xmppsocket.h',
380        'xmpp/xmppstanzaparser.cc',
381        'xmpp/xmppstanzaparser.h',
382        'xmpp/xmpptask.cc',
383        'xmpp/xmpptask.h',
384        'xmpp/xmppthread.cc',
385        'xmpp/xmppthread.h',
386      ],
387    },  # target libjingle
388    {
389      'target_name': 'libjingle_media',
390      'type': 'static_library',
391      'include_dirs': [
392        # TODO(jiayl): move this into the direct_dependent_settings of
393        # usrsctp.gyp.
394        '<(DEPTH)/third_party/usrsctp',
395      ],
396      'dependencies': [
397        '<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',
398        '<(DEPTH)/third_party/usrsctp/usrsctp.gyp:usrsctplib',
399        '<(webrtc_root)/modules/modules.gyp:video_render_module',
400        '<(webrtc_root)/webrtc.gyp:webrtc',
401        '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine',
402        '<(webrtc_root)/sound/sound.gyp:rtc_sound',
403        '<(webrtc_root)/system_wrappers/source/system_wrappers.gyp:system_wrappers',
404        '<(webrtc_root)/system_wrappers/source/system_wrappers.gyp:field_trial_default',
405        '<(webrtc_root)/libjingle/xmllite/xmllite.gyp:rtc_xmllite',
406        'libjingle',
407      ],
408      'direct_dependent_settings': {
409        'include_dirs': [
410          '<(DEPTH)/third_party/libyuv/include',
411        ],
412      },
413      'sources': [
414        'media/base/audioframe.h',
415        'media/base/audiorenderer.h',
416        'media/base/capturemanager.cc',
417        'media/base/capturemanager.h',
418        'media/base/capturerenderadapter.cc',
419        'media/base/capturerenderadapter.h',
420        'media/base/codec.cc',
421        'media/base/codec.h',
422        'media/base/constants.cc',
423        'media/base/constants.h',
424        'media/base/cpuid.cc',
425        'media/base/cpuid.h',
426        'media/base/cryptoparams.h',
427        'media/base/device.h',
428        'media/base/fakescreencapturerfactory.h',
429        'media/base/filemediaengine.cc',
430        'media/base/filemediaengine.h',
431        'media/base/hybriddataengine.h',
432        'media/base/mediachannel.h',
433        'media/base/mediacommon.h',
434        'media/base/mediaengine.cc',
435        'media/base/mediaengine.h',
436        'media/base/rtpdataengine.cc',
437        'media/base/rtpdataengine.h',
438        'media/base/rtpdump.cc',
439        'media/base/rtpdump.h',
440        'media/base/rtputils.cc',
441        'media/base/rtputils.h',
442        'media/base/screencastid.h',
443        'media/base/streamparams.cc',
444        'media/base/streamparams.h',
445        'media/base/videoadapter.cc',
446        'media/base/videoadapter.h',
447        'media/base/videocapturer.cc',
448        'media/base/videocapturer.h',
449        'media/base/videocapturerfactory.h',
450        'media/base/videocommon.cc',
451        'media/base/videocommon.h',
452        'media/base/videoframe.cc',
453        'media/base/videoframe.h',
454        'media/base/videoframefactory.h',
455        'media/base/videoprocessor.h',
456        'media/base/videorenderer.h',
457        'media/base/voiceprocessor.h',
458        'media/base/yuvframegenerator.cc',
459        'media/base/yuvframegenerator.h',
460        'media/devices/deviceinfo.h',
461        'media/devices/devicemanager.cc',
462        'media/devices/devicemanager.h',
463        'media/devices/dummydevicemanager.h',
464        'media/devices/filevideocapturer.cc',
465        'media/devices/filevideocapturer.h',
466        'media/devices/videorendererfactory.h',
467        'media/devices/yuvframescapturer.cc',
468        'media/devices/yuvframescapturer.h',
469        'media/other/linphonemediaengine.h',
470        'media/sctp/sctpdataengine.cc',
471        'media/sctp/sctpdataengine.h',
472        'media/webrtc/webrtccommon.h',
473        'media/webrtc/webrtcexport.h',
474        'media/webrtc/webrtcmediaengine.cc',
475        'media/webrtc/webrtcmediaengine.h',
476        'media/webrtc/webrtcmediaengine.cc',
477        'media/webrtc/webrtcpassthroughrender.cc',
478        'media/webrtc/webrtcpassthroughrender.h',
479        'media/webrtc/webrtctexturevideoframe.cc',
480        'media/webrtc/webrtctexturevideoframe.h',
481        'media/webrtc/webrtcvideocapturer.cc',
482        'media/webrtc/webrtcvideocapturerfactory.h',
483        'media/webrtc/webrtcvideocapturerfactory.cc',
484        'media/webrtc/webrtcvideocapturer.h',
485        'media/webrtc/webrtcvideodecoderfactory.h',
486        'media/webrtc/webrtcvideoencoderfactory.h',
487        'media/webrtc/webrtcvideoengine.cc',
488        'media/webrtc/webrtcvideoengine.h',
489        'media/webrtc/webrtcvideoengine2.cc',
490        'media/webrtc/webrtcvideoengine2.h',
491        'media/webrtc/webrtcvideoframe.cc',
492        'media/webrtc/webrtcvideoframe.h',
493        'media/webrtc/webrtcvideoframefactory.cc',
494        'media/webrtc/webrtcvideoframefactory.h',
495        'media/webrtc/webrtcvie.h',
496        'media/webrtc/webrtcvoe.h',
497        'media/webrtc/webrtcvoiceengine.cc',
498        'media/webrtc/webrtcvoiceengine.h',
499      ],
500      'conditions': [
501        ['build_with_chromium==1', {
502	  'dependencies': [
503            '<(webrtc_root)/modules/modules.gyp:video_capture_module_impl',
504            '<(webrtc_root)/modules/modules.gyp:video_render_module_impl',
505	  ],
506	}, {
507	  'dependencies': [
508            '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl',
509            '<(webrtc_root)/modules/modules.gyp:video_render_module_internal_impl',
510	  ],
511	}],
512        ['OS=="linux"', {
513          'sources': [
514            'media/devices/gtkvideorenderer.cc',
515            'media/devices/gtkvideorenderer.h',
516            'media/devices/libudevsymboltable.cc',
517            'media/devices/libudevsymboltable.h',
518            'media/devices/linuxdeviceinfo.cc',
519            'media/devices/linuxdevicemanager.cc',
520            'media/devices/linuxdevicemanager.h',
521            'media/devices/v4llookup.cc',
522            'media/devices/v4llookup.h',
523          ],
524          'include_dirs': [
525            'third_party/libudev'
526          ],
527          'cflags': [
528            '<!@(pkg-config --cflags gobject-2.0 gthread-2.0 gtk+-2.0)',
529          ],
530          'libraries': [
531            '-lrt',
532            '-lXext',
533            '-lX11',
534          ],
535        }],
536        ['OS=="win"', {
537          'sources': [
538            'media/devices/gdivideorenderer.cc',
539            'media/devices/gdivideorenderer.h',
540            'media/devices/win32deviceinfo.cc',
541            'media/devices/win32devicemanager.cc',
542            'media/devices/win32devicemanager.h',
543          ],
544          'msvs_settings': {
545            'VCLibrarianTool': {
546              'AdditionalDependencies': [
547                'd3d9.lib',
548                'gdi32.lib',
549                'strmiids.lib',
550                'winmm.lib',
551              ],
552            },
553          },
554        }],
555        ['OS=="mac"', {
556          'sources': [
557            'media/devices/macdeviceinfo.cc',
558            'media/devices/macdevicemanager.cc',
559            'media/devices/macdevicemanager.h',
560            'media/devices/macdevicemanagermm.mm',
561          ],
562          'conditions': [
563            ['target_arch=="ia32"', {
564              'sources': [
565                'media/devices/carbonvideorenderer.cc',
566                'media/devices/carbonvideorenderer.h',
567              ],
568              'link_settings': {
569                'xcode_settings': {
570                  'OTHER_LDFLAGS': [
571                    '-framework Carbon',
572                  ],
573                },
574              },
575            }],
576          ],
577          'xcode_settings': {
578            'WARNING_CFLAGS': [
579              # TODO(ronghuawu): Update macdevicemanager.cc to stop using
580              # deprecated functions and remove this flag.
581              '-Wno-deprecated-declarations',
582            ],
583          },
584          'link_settings': {
585            'xcode_settings': {
586              'OTHER_LDFLAGS': [
587                '-weak_framework AVFoundation',
588                '-framework Cocoa',
589                '-framework CoreAudio',
590                '-framework CoreVideo',
591                '-framework OpenGL',
592                '-framework QTKit',
593              ],
594            },
595          },
596        }],
597        ['OS=="ios"', {
598          'sources': [
599            'media/devices/mobiledevicemanager.cc',
600          ],
601          'include_dirs': [
602            # TODO(sjlee) Remove when vp8 is building for iOS.  vp8 pulls in
603            # libjpeg which pulls in libyuv which currently disabled.
604            '../third_party/libyuv/include',
605          ],
606        }],
607        ['OS=="android"', {
608          'sources': [
609            'media/devices/mobiledevicemanager.cc',
610          ],
611        }],
612      ],
613    },  # target libjingle_media
614    {
615      'target_name': 'libjingle_p2p',
616      'type': 'static_library',
617      'dependencies': [
618        '<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp',
619        'libjingle',
620        'libjingle_media',
621      ],
622      'include_dirs': [
623        '<(DEPTH)/testing/gtest/include',
624      ],
625      'direct_dependent_settings': {
626        'include_dirs': [
627          '<(DEPTH)/testing/gtest/include',
628        ],
629      },
630      'sources': [
631        'p2p/base/asyncstuntcpsocket.cc',
632        'p2p/base/asyncstuntcpsocket.h',
633        'p2p/base/basicpacketsocketfactory.cc',
634        'p2p/base/basicpacketsocketfactory.h',
635        'p2p/base/candidate.h',
636        'p2p/base/common.h',
637        'p2p/base/constants.cc',
638        'p2p/base/constants.h',
639        'p2p/base/dtlstransportchannel.cc',
640        'p2p/base/dtlstransportchannel.h',
641        'p2p/base/p2ptransport.cc',
642        'p2p/base/p2ptransport.h',
643        'p2p/base/p2ptransportchannel.cc',
644        'p2p/base/p2ptransportchannel.h',
645        'p2p/base/packetsocketfactory.h',
646        'p2p/base/parsing.cc',
647        'p2p/base/parsing.h',
648        'p2p/base/port.cc',
649        'p2p/base/port.h',
650        'p2p/base/portallocator.cc',
651        'p2p/base/portallocator.h',
652        'p2p/base/portallocatorsessionproxy.cc',
653        'p2p/base/portallocatorsessionproxy.h',
654        'p2p/base/portinterface.h',
655        'p2p/base/portproxy.cc',
656        'p2p/base/portproxy.h',
657        'p2p/base/pseudotcp.cc',
658        'p2p/base/pseudotcp.h',
659        'p2p/base/rawtransport.cc',
660        'p2p/base/rawtransport.h',
661        'p2p/base/rawtransportchannel.cc',
662        'p2p/base/rawtransportchannel.h',
663        'p2p/base/relayport.cc',
664        'p2p/base/relayport.h',
665        'p2p/base/relayserver.cc',
666        'p2p/base/relayserver.h',
667        'p2p/base/session.cc',
668        'p2p/base/session.h',
669        'p2p/base/sessionclient.h',
670        'p2p/base/sessiondescription.cc',
671        'p2p/base/sessiondescription.h',
672        'p2p/base/sessionid.h',
673        'p2p/base/sessionmanager.cc',
674        'p2p/base/sessionmanager.h',
675        'p2p/base/sessionmessages.cc',
676        'p2p/base/sessionmessages.h',
677        'p2p/base/stun.cc',
678        'p2p/base/stun.h',
679        'p2p/base/stunport.cc',
680        'p2p/base/stunport.h',
681        'p2p/base/stunrequest.cc',
682        'p2p/base/stunrequest.h',
683        'p2p/base/stunserver.cc',
684        'p2p/base/stunserver.h',
685        'p2p/base/tcpport.cc',
686        'p2p/base/tcpport.h',
687        'p2p/base/transport.cc',
688        'p2p/base/transport.h',
689        'p2p/base/transportchannel.cc',
690        'p2p/base/transportchannel.h',
691        'p2p/base/transportchannelimpl.h',
692        'p2p/base/transportchannelproxy.cc',
693        'p2p/base/transportchannelproxy.h',
694        'p2p/base/transportdescription.cc',
695        'p2p/base/transportdescription.h',
696        'p2p/base/transportdescriptionfactory.cc',
697        'p2p/base/transportdescriptionfactory.h',
698        'p2p/base/transportinfo.h',
699        'p2p/base/turnport.cc',
700        'p2p/base/turnport.h',
701        'p2p/base/turnserver.cc',
702        'p2p/base/turnserver.h',
703        'p2p/base/udpport.h',
704        'p2p/client/autoportallocator.h',
705        'p2p/client/basicportallocator.cc',
706        'p2p/client/basicportallocator.h',
707        'p2p/client/connectivitychecker.cc',
708        'p2p/client/connectivitychecker.h',
709        'p2p/client/httpportallocator.cc',
710        'p2p/client/httpportallocator.h',
711        'p2p/client/sessionmanagertask.h',
712        'p2p/client/sessionsendtask.h',
713        'p2p/client/socketmonitor.cc',
714        'p2p/client/socketmonitor.h',
715        'session/tunnel/pseudotcpchannel.cc',
716        'session/tunnel/pseudotcpchannel.h',
717        'session/tunnel/tunnelsessionclient.cc',
718        'session/tunnel/tunnelsessionclient.h',
719        'session/tunnel/securetunnelsessionclient.cc',
720        'session/tunnel/securetunnelsessionclient.h',
721        'session/media/audiomonitor.cc',
722        'session/media/audiomonitor.h',
723        'session/media/bundlefilter.cc',
724        'session/media/bundlefilter.h',
725        'session/media/call.cc',
726        'session/media/call.h',
727        'session/media/channel.cc',
728        'session/media/channel.h',
729        'session/media/channelmanager.cc',
730        'session/media/channelmanager.h',
731        'session/media/currentspeakermonitor.cc',
732        'session/media/currentspeakermonitor.h',
733        'session/media/mediamessages.cc',
734        'session/media/mediamessages.h',
735        'session/media/mediamonitor.cc',
736        'session/media/mediamonitor.h',
737        'session/media/mediarecorder.cc',
738        'session/media/mediarecorder.h',
739        'session/media/mediasession.cc',
740        'session/media/mediasession.h',
741        'session/media/mediasessionclient.cc',
742        'session/media/mediasessionclient.h',
743        'session/media/mediasink.h',
744        'session/media/rtcpmuxfilter.cc',
745        'session/media/rtcpmuxfilter.h',
746        'session/media/soundclip.cc',
747        'session/media/soundclip.h',
748        'session/media/srtpfilter.cc',
749        'session/media/srtpfilter.h',
750        'session/media/typingmonitor.cc',
751        'session/media/typingmonitor.h',
752        'session/media/voicechannel.h',
753      ],
754    },  # target libjingle_p2p
755    {
756      'target_name': 'libjingle_peerconnection',
757      'type': 'static_library',
758      'dependencies': [
759        'libjingle',
760        'libjingle_media',
761        'libjingle_p2p',
762      ],
763      'sources': [
764        'app/webrtc/audiotrack.cc',
765        'app/webrtc/audiotrack.h',
766        'app/webrtc/audiotrackrenderer.cc',
767        'app/webrtc/audiotrackrenderer.h',
768        'app/webrtc/datachannel.cc',
769        'app/webrtc/datachannel.h',
770        'app/webrtc/datachannelinterface.h',
771        'app/webrtc/dtmfsender.cc',
772        'app/webrtc/dtmfsender.h',
773        'app/webrtc/dtmfsenderinterface.h',
774        'app/webrtc/fakeportallocatorfactory.h',
775        'app/webrtc/jsep.h',
776        'app/webrtc/jsepicecandidate.cc',
777        'app/webrtc/jsepicecandidate.h',
778        'app/webrtc/jsepsessiondescription.cc',
779        'app/webrtc/jsepsessiondescription.h',
780        'app/webrtc/localaudiosource.cc',
781        'app/webrtc/localaudiosource.h',
782        'app/webrtc/mediaconstraintsinterface.cc',
783        'app/webrtc/mediaconstraintsinterface.h',
784        'app/webrtc/mediastream.cc',
785        'app/webrtc/mediastream.h',
786        'app/webrtc/mediastreamhandler.cc',
787        'app/webrtc/mediastreamhandler.h',
788        'app/webrtc/mediastreaminterface.h',
789        'app/webrtc/mediastreamprovider.h',
790        'app/webrtc/mediastreamproxy.h',
791        'app/webrtc/mediastreamsignaling.cc',
792        'app/webrtc/mediastreamsignaling.h',
793        'app/webrtc/mediastreamtrack.h',
794        'app/webrtc/mediastreamtrackproxy.h',
795        'app/webrtc/notifier.h',
796        'app/webrtc/peerconnection.cc',
797        'app/webrtc/peerconnection.h',
798        'app/webrtc/peerconnectionfactory.cc',
799        'app/webrtc/peerconnectionfactory.h',
800        'app/webrtc/peerconnectioninterface.h',
801        'app/webrtc/peerconnectionproxy.h',
802        'app/webrtc/portallocatorfactory.cc',
803        'app/webrtc/portallocatorfactory.h',
804        'app/webrtc/proxy.h',
805        'app/webrtc/remoteaudiosource.cc',
806        'app/webrtc/remoteaudiosource.h',
807        'app/webrtc/remotevideocapturer.cc',
808        'app/webrtc/remotevideocapturer.h',
809        'app/webrtc/sctputils.cc',
810        'app/webrtc/sctputils.h',
811        'app/webrtc/statscollector.cc',
812        'app/webrtc/statscollector.h',
813        'app/webrtc/statstypes.h',
814        'app/webrtc/streamcollection.h',
815        'app/webrtc/videosource.cc',
816        'app/webrtc/videosource.h',
817        'app/webrtc/videosourceinterface.h',
818        'app/webrtc/videosourceproxy.h',
819        'app/webrtc/videotrack.cc',
820        'app/webrtc/videotrack.h',
821        'app/webrtc/videotrackrenderers.cc',
822        'app/webrtc/videotrackrenderers.h',
823        'app/webrtc/webrtcsdp.cc',
824        'app/webrtc/webrtcsdp.h',
825        'app/webrtc/webrtcsession.cc',
826        'app/webrtc/webrtcsession.h',
827        'app/webrtc/webrtcsessiondescriptionfactory.cc',
828        'app/webrtc/webrtcsessiondescriptionfactory.h',
829      ],
830    },  # target libjingle_peerconnection
831  ],
832}
833