# # 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', ], 'targets': [ { 'target_name': 'libjingle_xmpphelp', 'type': 'static_library', 'dependencies': [ '<(DEPTH)/third_party/expat/expat.gyp:expat', 'libjingle.gyp:libjingle', 'libjingle.gyp:libjingle_p2p', ], 'sources': [ '<(webrtc_root)/libjingle/xmpp/jingleinfotask.cc', '<(webrtc_root)/libjingle/xmpp/jingleinfotask.h', ], }, # target libjingle_xmpphelp { 'target_name': 'relayserver', 'type': 'executable', 'dependencies': [ 'libjingle.gyp:libjingle', 'libjingle.gyp:libjingle_p2p', ], 'sources': [ 'examples/relayserver/relayserver_main.cc', ], }, # target relayserver { 'target_name': 'stunserver', 'type': 'executable', 'dependencies': [ 'libjingle.gyp:libjingle', 'libjingle.gyp:libjingle_p2p', ], 'sources': [ 'examples/stunserver/stunserver_main.cc', ], }, # target stunserver { 'target_name': 'turnserver', 'type': 'executable', 'dependencies': [ 'libjingle.gyp:libjingle', 'libjingle.gyp:libjingle_p2p', ], 'sources': [ 'examples/turnserver/turnserver_main.cc', ], }, # target turnserver { 'target_name': 'login', 'type': 'executable', 'dependencies': [ 'libjingle_xmpphelp', ], 'sources': [ 'examples/login/login_main.cc', ], }, # target login { 'target_name': 'peerconnection_server', 'type': 'executable', 'sources': [ 'examples/peerconnection/server/data_socket.cc', 'examples/peerconnection/server/data_socket.h', 'examples/peerconnection/server/main.cc', 'examples/peerconnection/server/peer_channel.cc', 'examples/peerconnection/server/peer_channel.h', 'examples/peerconnection/server/utils.cc', 'examples/peerconnection/server/utils.h', ], 'dependencies': [ 'libjingle.gyp:libjingle', ], # TODO(ronghuawu): crbug.com/167187 fix size_t to int truncations. 'msvs_disabled_warnings': [ 4309, ], }, # target peerconnection_server ], 'conditions': [ # TODO(ronghuawu): Reenable building call. # ['OS!="android"', { # 'targets': [ # { # 'target_name': 'call', # 'type': 'executable', # 'dependencies': [ # 'libjingle.gyp:libjingle_p2p', # 'libjingle_xmpphelp', # ], # 'sources': [ # 'examples/call/call_main.cc', # 'examples/call/callclient.cc', # 'examples/call/callclient.h', # 'examples/call/console.cc', # 'examples/call/console.h', # 'examples/call/friendinvitesendtask.cc', # 'examples/call/friendinvitesendtask.h', # 'examples/call/mediaenginefactory.cc', # 'examples/call/mediaenginefactory.h', # 'examples/call/muc.h', # 'examples/call/mucinviterecvtask.cc', # 'examples/call/mucinviterecvtask.h', # 'examples/call/mucinvitesendtask.cc', # 'examples/call/mucinvitesendtask.h', # 'examples/call/presencepushtask.cc', # 'examples/call/presencepushtask.h', # ], # 'conditions': [ # ['OS=="linux"', { # 'link_settings': { # 'libraries': [ # '="10.8")', { 'targets': [ { 'target_name': 'AppRTCDemo', 'type': 'executable', 'product_name': 'AppRTCDemo', 'mac_bundle': 1, 'mac_bundle_resources': [ 'examples/objc/AppRTCDemo/channel.html', ], 'dependencies': [ 'libjingle.gyp:libjingle_peerconnection_objc', ], 'conditions': [ ['OS=="ios"', { 'mac_bundle_resources': [ 'examples/objc/AppRTCDemo/ios/ResourceRules.plist', 'examples/objc/AppRTCDemo/ios/en.lproj/APPRTCViewController.xib', 'examples/objc/Icon.png', ], 'sources': [ 'examples/objc/AppRTCDemo/ios/APPRTCAppDelegate.h', 'examples/objc/AppRTCDemo/ios/APPRTCAppDelegate.m', 'examples/objc/AppRTCDemo/ios/APPRTCViewController.h', 'examples/objc/AppRTCDemo/ios/APPRTCViewController.m', 'examples/objc/AppRTCDemo/ios/AppRTCDemo-Prefix.pch', 'examples/objc/AppRTCDemo/ios/main.m', ], 'xcode_settings': { 'INFOPLIST_FILE': 'examples/objc/AppRTCDemo/ios/Info.plist', }, }], ['OS=="mac"', { 'sources': [ 'examples/objc/AppRTCDemo/mac/APPRTCAppDelegate.h', 'examples/objc/AppRTCDemo/mac/APPRTCAppDelegate.m', 'examples/objc/AppRTCDemo/mac/APPRTCViewController.h', 'examples/objc/AppRTCDemo/mac/APPRTCViewController.m', 'examples/objc/AppRTCDemo/mac/main.m', ], 'xcode_settings': { 'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO', 'INFOPLIST_FILE': 'examples/objc/AppRTCDemo/mac/Info.plist', 'MACOSX_DEPLOYMENT_TARGET' : '10.8', 'OTHER_LDFLAGS': [ '-framework AVFoundation', '-framework WebKit', ], }, }], ['target_arch=="ia32"', { 'dependencies' : [ '<(DEPTH)/testing/iossim/iossim.gyp:iossim#host', ], }], ], 'include_dirs': [ 'examples/objc/APPRTCDemo', ], 'sources': [ 'examples/objc/AppRTCDemo/APPRTCAppClient.h', 'examples/objc/AppRTCDemo/APPRTCAppClient.m', 'examples/objc/AppRTCDemo/APPRTCConnectionManager.h', 'examples/objc/AppRTCDemo/APPRTCConnectionManager.m', 'examples/objc/AppRTCDemo/ARDSignalingParams.h', 'examples/objc/AppRTCDemo/ARDSignalingParams.m', 'examples/objc/AppRTCDemo/ARDUtilities.h', 'examples/objc/AppRTCDemo/ARDUtilities.m', 'examples/objc/AppRTCDemo/GAEChannelClient.h', 'examples/objc/AppRTCDemo/GAEChannelClient.m', 'examples/objc/AppRTCDemo/RTCICECandidate+JSON.h', 'examples/objc/AppRTCDemo/RTCICECandidate+JSON.m', 'examples/objc/AppRTCDemo/RTCICEServer+JSON.h', 'examples/objc/AppRTCDemo/RTCICEServer+JSON.m', 'examples/objc/AppRTCDemo/RTCMediaConstraints+JSON.h', 'examples/objc/AppRTCDemo/RTCMediaConstraints+JSON.m', 'examples/objc/AppRTCDemo/RTCSessionDescription+JSON.h', 'examples/objc/AppRTCDemo/RTCSessionDescription+JSON.m', ], 'xcode_settings': { 'CLANG_ENABLE_OBJC_ARC': 'YES', }, }, # target AppRTCDemo ], # targets }], # OS=="ios" or (OS=="mac" and target_arch!="ia32" and mac_sdk>="10.8") ['OS=="android"', { 'targets': [ { 'target_name': 'AppRTCDemo', 'type': 'none', 'dependencies': [ 'libjingle.gyp:libjingle_peerconnection_jar', ], 'actions': [ { # TODO(fischman): convert from a custom script to a standard gyp # apk build once chromium's apk-building gyp machinery can be used # (http://crbug.com/225101) 'action_name': 'build_apprtcdemo_apk', 'inputs' : [ '<(PRODUCT_DIR)/libjingle_peerconnection.jar', '<(PRODUCT_DIR)/lib/libjingle_peerconnection_so.so', 'examples/android/AndroidManifest.xml', 'examples/android/README', 'examples/android/ant.properties', 'examples/android/assets/channel.html', 'examples/android/third_party/autobanh/autobanh.jar', 'examples/android/build.xml', 'examples/android/jni/Android.mk', 'examples/android/project.properties', 'examples/android/res/drawable-hdpi/disconnect.png', 'examples/android/res/drawable-hdpi/ic_action_full_screen.png', 'examples/android/res/drawable-hdpi/ic_action_return_from_full_screen.png', 'examples/android/res/drawable-hdpi/ic_loopback_call.png', 'examples/android/res/drawable-hdpi/ic_launcher.png', 'examples/android/res/drawable-ldpi/disconnect.png', 'examples/android/res/drawable-ldpi/ic_action_full_screen.png', 'examples/android/res/drawable-ldpi/ic_action_return_from_full_screen.png', 'examples/android/res/drawable-ldpi/ic_loopback_call.png', 'examples/android/res/drawable-ldpi/ic_launcher.png', 'examples/android/res/drawable-mdpi/disconnect.png', 'examples/android/res/drawable-mdpi/ic_action_full_screen.png', 'examples/android/res/drawable-mdpi/ic_action_return_from_full_screen.png', 'examples/android/res/drawable-mdpi/ic_loopback_call.png', 'examples/android/res/drawable-mdpi/ic_launcher.png', 'examples/android/res/drawable-xhdpi/disconnect.png', 'examples/android/res/drawable-xhdpi/ic_action_full_screen.png', 'examples/android/res/drawable-xhdpi/ic_action_return_from_full_screen.png', 'examples/android/res/drawable-xhdpi/ic_loopback_call.png', 'examples/android/res/drawable-xhdpi/ic_launcher.png', 'examples/android/res/layout/activity_connect.xml', 'examples/android/res/layout/activity_fullscreen.xml', 'examples/android/res/layout/fragment_menubar.xml', 'examples/android/res/menu/connect_menu.xml', 'examples/android/res/values/arrays.xml', 'examples/android/res/values/strings.xml', 'examples/android/res/xml/preferences.xml', 'examples/android/src/org/appspot/apprtc/AppRTCAudioManager.java', 'examples/android/src/org/appspot/apprtc/AppRTCClient.java', 'examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java', 'examples/android/src/org/appspot/apprtc/ConnectActivity.java', 'examples/android/src/org/appspot/apprtc/GAEChannelClient.java', 'examples/android/src/org/appspot/apprtc/GAERTCClient.java', 'examples/android/src/org/appspot/apprtc/PeerConnectionClient.java', 'examples/android/src/org/appspot/apprtc/RoomParametersFetcher.java', 'examples/android/src/org/appspot/apprtc/SettingsActivity.java', 'examples/android/src/org/appspot/apprtc/SettingsFragment.java', 'examples/android/src/org/appspot/apprtc/UnhandledExceptionHandler.java', 'examples/android/src/org/appspot/apprtc/WebSocketChannelClient.java', 'examples/android/src/org/appspot/apprtc/WebSocketRTCClient.java', ], 'outputs': [ '<(PRODUCT_DIR)/AppRTCDemo-debug.apk', ], 'variables': { 'ant_log': '../../<(INTERMEDIATE_DIR)/ant.log', # ../.. to compensate for the cd examples/android below. }, 'action': [ 'bash', '-ec', 'rm -fr <(_outputs) examples/android/{bin,libs} && ' 'mkdir -p <(INTERMEDIATE_DIR) && ' # Must happen _before_ the cd below 'mkdir -p examples/android/libs/<(android_app_abi) && ' 'cp <(PRODUCT_DIR)/libjingle_peerconnection.jar examples/android/libs/ &&' 'cp examples/android/third_party/autobanh/autobanh.jar examples/android/libs/ &&' '<(android_strip) -o examples/android/libs/<(android_app_abi)/libjingle_peerconnection_so.so <(PRODUCT_DIR)/lib/libjingle_peerconnection_so.so &&' 'cd examples/android && ' '{ ANDROID_SDK_ROOT=<(android_sdk_root) ' 'ant debug > <(ant_log) 2>&1 || ' ' { cat <(ant_log) ; exit 1; } } && ' 'cd - > /dev/null && ' 'cp examples/android/bin/AppRTCDemo-debug.apk <(_outputs)' ], }, ], }, # target AppRTCDemo ], # targets }], # OS=="android" ], }