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': [ 30 'build/common.gypi', 31 ], 32 'targets': [ 33 { 34 'target_name': 'libjingle_xmpphelp', 35 'type': 'static_library', 36 'dependencies': [ 37 '<(DEPTH)/third_party/expat/expat.gyp:expat', 38 'libjingle.gyp:libjingle', 39 'libjingle.gyp:libjingle_p2p', 40 ], 41 'sources': [ 42 'xmpp/jingleinfotask.cc', 43 'xmpp/jingleinfotask.h', 44 ], 45 }, # target libjingle_xmpphelp 46 { 47 'target_name': 'relayserver', 48 'type': 'executable', 49 'dependencies': [ 50 'libjingle.gyp:libjingle', 51 'libjingle.gyp:libjingle_p2p', 52 ], 53 'sources': [ 54 'p2p/base/relayserver_main.cc', 55 ], 56 }, # target relayserver 57 { 58 'target_name': 'stunserver', 59 'type': 'executable', 60 'dependencies': [ 61 'libjingle.gyp:libjingle', 62 'libjingle.gyp:libjingle_p2p', 63 ], 64 'sources': [ 65 'p2p/base/stunserver_main.cc', 66 ], 67 }, # target stunserver 68 { 69 'target_name': 'turnserver', 70 'type': 'executable', 71 'dependencies': [ 72 'libjingle.gyp:libjingle', 73 'libjingle.gyp:libjingle_p2p', 74 ], 75 'sources': [ 76 'p2p/base/turnserver_main.cc', 77 ], 78 }, # target turnserver 79 { 80 'target_name': 'login', 81 'type': 'executable', 82 'dependencies': [ 83 'libjingle_xmpphelp', 84 ], 85 'sources': [ 86 'examples/login/login_main.cc', 87 ], 88 }, # target login 89 { 90 'target_name': 'peerconnection_server', 91 'type': 'executable', 92 'sources': [ 93 'examples/peerconnection/server/data_socket.cc', 94 'examples/peerconnection/server/data_socket.h', 95 'examples/peerconnection/server/main.cc', 96 'examples/peerconnection/server/peer_channel.cc', 97 'examples/peerconnection/server/peer_channel.h', 98 'examples/peerconnection/server/utils.cc', 99 'examples/peerconnection/server/utils.h', 100 ], 101 'dependencies': [ 102 'libjingle.gyp:libjingle', 103 ], 104 # TODO(ronghuawu): crbug.com/167187 fix size_t to int truncations. 105 'msvs_disabled_warnings': [ 4309, ], 106 }, # target peerconnection_server 107 ], 108 'conditions': [ 109 # TODO(ronghuawu): Reenable building call. 110 # ['OS!="android"', { 111 # 'targets': [ 112 # { 113 # 'target_name': 'call', 114 # 'type': 'executable', 115 # 'dependencies': [ 116 # 'libjingle.gyp:libjingle_p2p', 117 # 'libjingle_xmpphelp', 118 # ], 119 # 'sources': [ 120 # 'examples/call/call_main.cc', 121 # 'examples/call/callclient.cc', 122 # 'examples/call/callclient.h', 123 # 'examples/call/console.cc', 124 # 'examples/call/console.h', 125 # 'examples/call/friendinvitesendtask.cc', 126 # 'examples/call/friendinvitesendtask.h', 127 # 'examples/call/mediaenginefactory.cc', 128 # 'examples/call/mediaenginefactory.h', 129 # 'examples/call/muc.h', 130 # 'examples/call/mucinviterecvtask.cc', 131 # 'examples/call/mucinviterecvtask.h', 132 # 'examples/call/mucinvitesendtask.cc', 133 # 'examples/call/mucinvitesendtask.h', 134 # 'examples/call/presencepushtask.cc', 135 # 'examples/call/presencepushtask.h', 136 # ], 137 # 'conditions': [ 138 # ['OS=="linux"', { 139 # 'link_settings': { 140 # 'libraries': [ 141 # '<!@(pkg-config --libs-only-l gobject-2.0 gthread-2.0' 142 # ' gtk+-2.0)', 143 # ], 144 # }, 145 # }], 146 # ['OS=="win"', { 147 # 'msvs_settings': { 148 # 'VCLinkerTool': { 149 # 'AdditionalDependencies': [ 150 # 'strmiids.lib', 151 # ], 152 # }, 153 # }, 154 # }], 155 # ], # conditions 156 # }, # target call 157 # ], # targets 158 # }], # OS!="android" 159 ['OS=="linux" or OS=="win"', { 160 'targets': [ 161 { 162 'target_name': 'peerconnection_client', 163 'type': 'executable', 164 'sources': [ 165 'examples/peerconnection/client/conductor.cc', 166 'examples/peerconnection/client/conductor.h', 167 'examples/peerconnection/client/defaults.cc', 168 'examples/peerconnection/client/defaults.h', 169 'examples/peerconnection/client/peer_connection_client.cc', 170 'examples/peerconnection/client/peer_connection_client.h', 171 ], 172 'dependencies': [ 173 '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp', 174 'libjingle.gyp:libjingle_peerconnection', 175 ], 176 'conditions': [ 177 # TODO(ronghuawu): Move these files to a win/ directory then they 178 # can be excluded automatically. 179 ['OS=="win"', { 180 'sources': [ 181 'examples/peerconnection/client/flagdefs.h', 182 'examples/peerconnection/client/main.cc', 183 'examples/peerconnection/client/main_wnd.cc', 184 'examples/peerconnection/client/main_wnd.h', 185 ], 186 'msvs_settings': { 187 'VCLinkerTool': { 188 'SubSystem': '2', # Windows 189 }, 190 }, 191 }], # OS=="win" 192 ['OS=="linux"', { 193 'sources': [ 194 'examples/peerconnection/client/linux/main.cc', 195 'examples/peerconnection/client/linux/main_wnd.cc', 196 'examples/peerconnection/client/linux/main_wnd.h', 197 ], 198 'cflags': [ 199 '<!@(pkg-config --cflags glib-2.0 gobject-2.0 gtk+-2.0)', 200 ], 201 'link_settings': { 202 'ldflags': [ 203 '<!@(pkg-config --libs-only-L --libs-only-other glib-2.0' 204 ' gobject-2.0 gthread-2.0 gtk+-2.0)', 205 ], 206 'libraries': [ 207 '<!@(pkg-config --libs-only-l glib-2.0 gobject-2.0' 208 ' gthread-2.0 gtk+-2.0)', 209 '-lX11', 210 '-lXcomposite', 211 '-lXext', 212 '-lXrender', 213 ], 214 }, 215 }], # OS=="linux" 216 ], # conditions 217 }, # target peerconnection_client 218 ], # targets 219 }], # OS=="linux" or OS=="win" 220 221 ['OS=="ios"', { 222 'targets': [ 223 { 224 'target_name': 'AppRTCDemo', 225 'type': 'executable', 226 'product_name': 'AppRTCDemo', 227 'mac_bundle': 1, 228 'mac_bundle_resources': [ 229 'examples/ios/AppRTCDemo/ResourceRules.plist', 230 'examples/ios/AppRTCDemo/en.lproj/APPRTCViewController.xib', 231 'examples/ios/AppRTCDemo/ios_channel.html', 232 'examples/ios/Icon.png', 233 ], 234 'dependencies': [ 235 'libjingle.gyp:libjingle_peerconnection_objc', 236 ], 237 'conditions': [ 238 ['target_arch=="ia32"', { 239 'dependencies' : [ 240 '<(DEPTH)/testing/iossim/iossim.gyp:iossim#host', 241 ], 242 }], 243 ], 244 'sources': [ 245 'examples/ios/AppRTCDemo/APPRTCAppClient.h', 246 'examples/ios/AppRTCDemo/APPRTCAppClient.m', 247 'examples/ios/AppRTCDemo/APPRTCAppDelegate.h', 248 'examples/ios/AppRTCDemo/APPRTCAppDelegate.m', 249 'examples/ios/AppRTCDemo/APPRTCViewController.h', 250 'examples/ios/AppRTCDemo/APPRTCViewController.m', 251 'examples/ios/AppRTCDemo/AppRTCDemo-Prefix.pch', 252 'examples/ios/AppRTCDemo/GAEChannelClient.h', 253 'examples/ios/AppRTCDemo/GAEChannelClient.m', 254 'examples/ios/AppRTCDemo/main.m', 255 ], 256 'xcode_settings': { 257 'CLANG_ENABLE_OBJC_ARC': 'YES', 258 'INFOPLIST_FILE': 'examples/ios/AppRTCDemo/Info.plist', 259 'OTHER_LDFLAGS': [ 260 '-framework Foundation', 261 '-framework UIKit', 262 ], 263 }, 264 }, # target AppRTCDemo 265 ], # targets 266 }], # OS=="ios" 267 268 ['OS=="android"', { 269 'targets': [ 270 { 271 'target_name': 'AppRTCDemo', 272 'type': 'none', 273 'dependencies': [ 274 'libjingle.gyp:libjingle_peerconnection_jar', 275 ], 276 'actions': [ 277 { 278 # TODO(fischman): convert from a custom script to a standard gyp 279 # apk build once chromium's apk-building gyp machinery can be used 280 # (http://crbug.com/225101) 281 'action_name': 'build_apprtcdemo_apk', 282 'inputs' : [ 283 '<(PRODUCT_DIR)/libjingle_peerconnection.jar', 284 '<(PRODUCT_DIR)/libjingle_peerconnection_so.so', 285 'examples/android/AndroidManifest.xml', 286 'examples/android/README', 287 'examples/android/ant.properties', 288 'examples/android/assets/channel.html', 289 'examples/android/build.xml', 290 'examples/android/jni/Android.mk', 291 'examples/android/project.properties', 292 'examples/android/res/drawable-hdpi/ic_launcher.png', 293 'examples/android/res/drawable-ldpi/ic_launcher.png', 294 'examples/android/res/drawable-mdpi/ic_launcher.png', 295 'examples/android/res/drawable-xhdpi/ic_launcher.png', 296 'examples/android/res/values/strings.xml', 297 'examples/android/src/org/appspot/apprtc/AppRTCClient.java', 298 'examples/android/src/org/appspot/apprtc/AppRTCDemoActivity.java', 299 'examples/android/src/org/appspot/apprtc/UnhandledExceptionHandler.java', 300 'examples/android/src/org/appspot/apprtc/FramePool.java', 301 'examples/android/src/org/appspot/apprtc/GAEChannelClient.java', 302 'examples/android/src/org/appspot/apprtc/VideoStreamsView.java', 303 ], 304 'outputs': [ 305 '<(PRODUCT_DIR)/AppRTCDemo-debug.apk', 306 ], 307 'variables': { 308 'ant_log': '<(INTERMEDIATE_DIR)/ant.log', 309 }, 310 'action': [ 311 'bash', '-ec', 312 'rm -fr <(_outputs) examples/android/{bin,libs} && ' 313 'mkdir -p examples/android/libs/<(android_app_abi) && ' 314 'cp <(PRODUCT_DIR)/libjingle_peerconnection.jar examples/android/libs/ &&' 315 '<(android_strip) -o examples/android/libs/<(android_app_abi)/libjingle_peerconnection_so.so <(PRODUCT_DIR)/libjingle_peerconnection_so.so &&' 316 'cd examples/android && ' 317 'mkdir -p <(INTERMEDIATE_DIR) && ' 318 '{ ant -q -l <(ant_log) debug || ' 319 ' { cat <(ant_log) ; exit 1; } } && ' 320 'cd - > /dev/null && ' 321 'cp examples/android/bin/AppRTCDemo-debug.apk <(_outputs)' 322 ], 323 }, 324 ], 325 }, # target AppRTCDemo 326 ], # targets 327 }], # OS=="android" 328 ], 329} 330