# # libjingle # Copyright 2012 Google Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. { 'includes': ['build/common.gypi'], 'conditions': [ ['os_posix == 1 and OS != "mac" and OS != "ios"', { 'conditions': [ ['sysroot!=""', { 'variables': { 'pkg-config': '../../../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"', }, }, { 'variables': { 'pkg-config': 'pkg-config' }, }], ], }], ['OS=="linux" or OS=="android"', { 'targets': [ { 'target_name': 'libjingle_peerconnection_so', 'type': 'shared_library', 'dependencies': [ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', 'libjingle_peerconnection', ], 'sources': [ 'app/webrtc/java/jni/classreferenceholder.cc', 'app/webrtc/java/jni/classreferenceholder.h', 'app/webrtc/java/jni/jni_helpers.cc', 'app/webrtc/java/jni/jni_helpers.h', 'app/webrtc/java/jni/native_handle_impl.cc', 'app/webrtc/java/jni/native_handle_impl.h', 'app/webrtc/java/jni/peerconnection_jni.cc', ], 'include_dirs': [ '<(libyuv_dir)/include', ], 'conditions': [ ['OS=="linux"', { 'defines': [ 'HAVE_GTK', ], 'include_dirs': [ '<(java_home)/include', '<(java_home)/include/linux', ], 'conditions': [ ['use_gtk==1', { 'link_settings': { 'libraries': [ ' <(build_jar_log) 2>&1 || ' ' { cat <(build_jar_log) ; exit 1; } }' ], }, ], 'dependencies': [ 'libjingle_peerconnection_so', ], }, ], }], ['OS=="android"', { 'targets': [ { # |libjingle_peerconnection_java| builds a jar file with name # libjingle_peerconnection_java.jar using Chromes build system. # It includes all Java files needed to setup a PeeerConnection call # from Android. # TODO(perkj): Consider replacing the use of # libjingle_peerconnection_jar with this target everywhere. 'target_name': 'libjingle_peerconnection_java', 'type': 'none', 'dependencies': [ 'libjingle_peerconnection_so', ], 'variables': { # Designate as Chromium code and point to our lint settings to # enable linting of the WebRTC code (this is the only way to make # lint_action invoke the Android linter). 'android_manifest_path': '<(webrtc_root)/build/android/AndroidManifest.xml', 'suppressions_file': '<(webrtc_root)/build/android/suppressions.xml', 'chromium_code': 1, 'java_in_dir': 'app/webrtc/java', 'webrtc_base_dir': '<(webrtc_root)/base', 'webrtc_modules_dir': '<(webrtc_root)/modules', 'additional_src_dirs' : [ 'app/webrtc/java/android', '<(webrtc_base_dir)/java/src', '<(webrtc_modules_dir)/audio_device/android/java/src', '<(webrtc_modules_dir)/video_render/android/java/src', ], }, 'includes': ['../build/java.gypi'], }, # libjingle_peerconnection_java ] }], ['OS=="ios" or (OS=="mac" and target_arch!="ia32" and mac_sdk>="10.7")', { # The >= 10.7 above is required for ARC. 'targets': [ { 'target_name': 'libjingle_peerconnection_objc', 'type': 'static_library', 'dependencies': [ 'libjingle_peerconnection', ], 'sources': [ 'app/webrtc/objc/RTCAudioTrack+Internal.h', 'app/webrtc/objc/RTCAudioTrack.mm', 'app/webrtc/objc/RTCDataChannel+Internal.h', 'app/webrtc/objc/RTCDataChannel.mm', 'app/webrtc/objc/RTCEnumConverter.h', 'app/webrtc/objc/RTCEnumConverter.mm', 'app/webrtc/objc/RTCFileLogger.mm', 'app/webrtc/objc/RTCI420Frame+Internal.h', 'app/webrtc/objc/RTCI420Frame.mm', 'app/webrtc/objc/RTCICECandidate+Internal.h', 'app/webrtc/objc/RTCICECandidate.mm', 'app/webrtc/objc/RTCICEServer+Internal.h', 'app/webrtc/objc/RTCICEServer.mm', 'app/webrtc/objc/RTCLogging.mm', 'app/webrtc/objc/RTCMediaConstraints+Internal.h', 'app/webrtc/objc/RTCMediaConstraints.mm', 'app/webrtc/objc/RTCMediaConstraintsNative.cc', 'app/webrtc/objc/RTCMediaConstraintsNative.h', 'app/webrtc/objc/RTCMediaSource+Internal.h', 'app/webrtc/objc/RTCMediaSource.mm', 'app/webrtc/objc/RTCMediaStream+Internal.h', 'app/webrtc/objc/RTCMediaStream.mm', 'app/webrtc/objc/RTCMediaStreamTrack+Internal.h', 'app/webrtc/objc/RTCMediaStreamTrack.mm', 'app/webrtc/objc/RTCOpenGLVideoRenderer.mm', 'app/webrtc/objc/RTCPair.m', 'app/webrtc/objc/RTCPeerConnection+Internal.h', 'app/webrtc/objc/RTCPeerConnection.mm', 'app/webrtc/objc/RTCPeerConnectionFactory.mm', 'app/webrtc/objc/RTCPeerConnectionInterface+Internal.h', 'app/webrtc/objc/RTCPeerConnectionInterface.mm', 'app/webrtc/objc/RTCPeerConnectionObserver.h', 'app/webrtc/objc/RTCPeerConnectionObserver.mm', 'app/webrtc/objc/RTCSessionDescription+Internal.h', 'app/webrtc/objc/RTCSessionDescription.mm', 'app/webrtc/objc/RTCStatsReport+Internal.h', 'app/webrtc/objc/RTCStatsReport.mm', 'app/webrtc/objc/RTCVideoCapturer+Internal.h', 'app/webrtc/objc/RTCVideoCapturer.mm', 'app/webrtc/objc/RTCVideoRendererAdapter.h', 'app/webrtc/objc/RTCVideoRendererAdapter.mm', 'app/webrtc/objc/RTCVideoSource+Internal.h', 'app/webrtc/objc/RTCVideoSource.mm', 'app/webrtc/objc/RTCVideoTrack+Internal.h', 'app/webrtc/objc/RTCVideoTrack.mm', 'app/webrtc/objc/public/RTCAudioSource.h', 'app/webrtc/objc/public/RTCAudioTrack.h', 'app/webrtc/objc/public/RTCDataChannel.h', 'app/webrtc/objc/public/RTCFileLogger.h', 'app/webrtc/objc/public/RTCI420Frame.h', 'app/webrtc/objc/public/RTCICECandidate.h', 'app/webrtc/objc/public/RTCICEServer.h', 'app/webrtc/objc/public/RTCLogging.h', 'app/webrtc/objc/public/RTCMediaConstraints.h', 'app/webrtc/objc/public/RTCMediaSource.h', 'app/webrtc/objc/public/RTCMediaStream.h', 'app/webrtc/objc/public/RTCMediaStreamTrack.h', 'app/webrtc/objc/public/RTCOpenGLVideoRenderer.h', 'app/webrtc/objc/public/RTCPair.h', 'app/webrtc/objc/public/RTCPeerConnection.h', 'app/webrtc/objc/public/RTCPeerConnectionDelegate.h', 'app/webrtc/objc/public/RTCPeerConnectionFactory.h', 'app/webrtc/objc/public/RTCPeerConnectionInterface.h', 'app/webrtc/objc/public/RTCSessionDescription.h', 'app/webrtc/objc/public/RTCSessionDescriptionDelegate.h', 'app/webrtc/objc/public/RTCStatsDelegate.h', 'app/webrtc/objc/public/RTCStatsReport.h', 'app/webrtc/objc/public/RTCTypes.h', 'app/webrtc/objc/public/RTCVideoCapturer.h', 'app/webrtc/objc/public/RTCVideoRenderer.h', 'app/webrtc/objc/public/RTCVideoSource.h', 'app/webrtc/objc/public/RTCVideoTrack.h', ], 'direct_dependent_settings': { 'include_dirs': [ '<(DEPTH)/talk/app/webrtc/objc/public', ], }, 'include_dirs': [ '<(DEPTH)/talk/app/webrtc', '<(DEPTH)/talk/app/webrtc/objc', '<(DEPTH)/talk/app/webrtc/objc/public', ], 'link_settings': { 'libraries': [ '-lstdc++', ], }, 'all_dependent_settings': { 'xcode_settings': { 'CLANG_ENABLE_OBJC_ARC': 'YES', }, }, 'xcode_settings': { 'CLANG_ENABLE_OBJC_ARC': 'YES', # common.gypi enables this for mac but we want this to be disabled # like it is for ios. 'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO', }, 'conditions': [ ['OS=="ios"', { 'sources': [ 'app/webrtc/objc/avfoundationvideocapturer.h', 'app/webrtc/objc/avfoundationvideocapturer.mm', 'app/webrtc/objc/RTCAVFoundationVideoSource+Internal.h', 'app/webrtc/objc/RTCAVFoundationVideoSource.mm', 'app/webrtc/objc/RTCEAGLVideoView.m', 'app/webrtc/objc/public/RTCEAGLVideoView.h', 'app/webrtc/objc/public/RTCAVFoundationVideoSource.h', ], 'link_settings': { 'xcode_settings': { 'OTHER_LDFLAGS': [ '-framework CoreGraphics', '-framework GLKit', ], }, }, }], ['OS=="mac"', { 'sources': [ 'app/webrtc/objc/RTCNSGLVideoView.m', 'app/webrtc/objc/public/RTCNSGLVideoView.h', ], 'xcode_settings': { # Need to build against 10.7 framework for full ARC support # on OSX. 'MACOSX_DEPLOYMENT_TARGET' : '10.7', # RTCVideoTrack.mm uses code with partial availability. # https://code.google.com/p/webrtc/issues/detail?id=4695 'WARNING_CFLAGS!': ['-Wpartial-availability'], }, 'link_settings': { 'xcode_settings': { 'OTHER_LDFLAGS': [ '-framework Cocoa', ], }, }, }], ], }, # target libjingle_peerconnection_objc ], }], ], 'targets': [ { 'target_name': 'libjingle', 'type': 'none', 'dependencies': [ '<(webrtc_root)/base/base.gyp:rtc_base', ], 'conditions': [ ['build_json==1', { 'dependencies': [ '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp', ], 'export_dependent_settings': [ '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp', ], }], ['build_expat==1', { 'dependencies': [ '<(DEPTH)/third_party/expat/expat.gyp:expat', ], 'export_dependent_settings': [ '<(DEPTH)/third_party/expat/expat.gyp:expat', ], }], ], }, # target libjingle { 'target_name': 'libjingle_media', 'type': 'static_library', 'dependencies': [ '<(webrtc_root)/common.gyp:webrtc_common', '<(webrtc_root)/modules/modules.gyp:video_render_module', '<(webrtc_root)/webrtc.gyp:webrtc', '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine', '<(webrtc_root)/sound/sound.gyp:rtc_sound', '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', '<(webrtc_root)/libjingle/xmllite/xmllite.gyp:rtc_xmllite', '<(webrtc_root)/libjingle/xmpp/xmpp.gyp:rtc_xmpp', '<(webrtc_root)/p2p/p2p.gyp:rtc_p2p', 'libjingle', ], 'direct_dependent_settings': { 'include_dirs': [ '<(libyuv_dir)/include', ], }, 'sources': [ 'media/base/audioframe.h', 'media/base/audiorenderer.h', 'media/base/capturemanager.cc', 'media/base/capturemanager.h', 'media/base/capturerenderadapter.cc', 'media/base/capturerenderadapter.h', 'media/base/codec.cc', 'media/base/codec.h', 'media/base/constants.cc', 'media/base/constants.h', 'media/base/cpuid.cc', 'media/base/cpuid.h', 'media/base/cryptoparams.h', 'media/base/device.h', 'media/base/fakescreencapturerfactory.h', 'media/base/hybriddataengine.h', 'media/base/mediachannel.h', 'media/base/mediacommon.h', 'media/base/mediaengine.cc', 'media/base/mediaengine.h', 'media/base/rtpdataengine.cc', 'media/base/rtpdataengine.h', 'media/base/rtpdump.cc', 'media/base/rtpdump.h', 'media/base/rtputils.cc', 'media/base/rtputils.h', 'media/base/screencastid.h', 'media/base/streamparams.cc', 'media/base/streamparams.h', 'media/base/videoadapter.cc', 'media/base/videoadapter.h', 'media/base/videocapturer.cc', 'media/base/videocapturer.h', 'media/base/videocapturerfactory.h', 'media/base/videocommon.cc', 'media/base/videocommon.h', 'media/base/videoframe.cc', 'media/base/videoframe.h', 'media/base/videoframefactory.cc', 'media/base/videoframefactory.h', 'media/base/videorenderer.h', 'media/base/yuvframegenerator.cc', 'media/base/yuvframegenerator.h', 'media/devices/deviceinfo.h', 'media/devices/devicemanager.cc', 'media/devices/devicemanager.h', 'media/devices/dummydevicemanager.h', 'media/devices/filevideocapturer.cc', 'media/devices/filevideocapturer.h', 'media/devices/videorendererfactory.h', 'media/devices/yuvframescapturer.cc', 'media/devices/yuvframescapturer.h', 'media/sctp/sctpdataengine.cc', 'media/sctp/sctpdataengine.h', 'media/webrtc/simulcast.cc', 'media/webrtc/simulcast.h', 'media/webrtc/webrtccommon.h', 'media/webrtc/webrtcmediaengine.cc', 'media/webrtc/webrtcmediaengine.h', 'media/webrtc/webrtcmediaengine.cc', 'media/webrtc/webrtcvideocapturer.cc', 'media/webrtc/webrtcvideocapturer.h', 'media/webrtc/webrtcvideocapturerfactory.h', 'media/webrtc/webrtcvideocapturerfactory.cc', 'media/webrtc/webrtcvideodecoderfactory.h', 'media/webrtc/webrtcvideoencoderfactory.h', 'media/webrtc/webrtcvideoengine2.cc', 'media/webrtc/webrtcvideoengine2.h', 'media/webrtc/webrtcvideoframe.cc', 'media/webrtc/webrtcvideoframe.h', 'media/webrtc/webrtcvideoframefactory.cc', 'media/webrtc/webrtcvideoframefactory.h', 'media/webrtc/webrtcvoe.h', 'media/webrtc/webrtcvoiceengine.cc', 'media/webrtc/webrtcvoiceengine.h', ], 'conditions': [ ['build_libyuv==1', { 'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',], }], ['build_usrsctp==1', { 'include_dirs': [ # TODO(jiayl): move this into the direct_dependent_settings of # usrsctp.gyp. '<(DEPTH)/third_party/usrsctp', ], 'dependencies': [ '<(DEPTH)/third_party/usrsctp/usrsctp.gyp:usrsctplib', ], }], ['build_with_chromium==1', { 'dependencies': [ '<(webrtc_root)/modules/modules.gyp:video_capture', '<(webrtc_root)/modules/modules.gyp:video_render', ], }, { 'dependencies': [ '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl', '<(webrtc_root)/modules/modules.gyp:video_render_module_internal_impl', ], }], ['OS=="linux"', { 'sources': [ 'media/devices/libudevsymboltable.cc', 'media/devices/libudevsymboltable.h', 'media/devices/linuxdeviceinfo.cc', 'media/devices/linuxdevicemanager.cc', 'media/devices/linuxdevicemanager.h', 'media/devices/v4llookup.cc', 'media/devices/v4llookup.h', ], 'conditions': [ ['use_gtk==1', { 'sources': [ 'media/devices/gtkvideorenderer.cc', 'media/devices/gtkvideorenderer.h', ], 'cflags': [ '