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 'targets': [ 30 { 31 'target_name': 'libjingle_unittest_main', 32 'type': 'static_library', 33 'dependencies': [ 34 '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils', 35 '<@(libjingle_tests_additional_deps)', 36 ], 37 'direct_dependent_settings': { 38 'include_dirs': [ 39 '<(libyuv_dir)/include', 40 '<(DEPTH)/testing/gtest/include', 41 '<(DEPTH)/testing/gtest', 42 ], 43 }, 44 'conditions': [ 45 ['build_libyuv==1', { 46 'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',], 47 }], 48 ], 49 'include_dirs': [ 50 '<(DEPTH)/testing/gtest/include', 51 '<(DEPTH)/testing/gtest', 52 ], 53 'sources': [ 54 'media/base/fakecapturemanager.h', 55 'media/base/fakemediaengine.h', 56 'media/base/fakenetworkinterface.h', 57 'media/base/fakertp.h', 58 'media/base/fakevideocapturer.h', 59 'media/base/fakevideorenderer.h', 60 'media/base/testutils.cc', 61 'media/base/testutils.h', 62 'media/devices/fakedevicemanager.h', 63 'media/webrtc/fakewebrtccall.cc', 64 'media/webrtc/fakewebrtccall.h', 65 'media/webrtc/fakewebrtccommon.h', 66 'media/webrtc/fakewebrtcdeviceinfo.h', 67 'media/webrtc/fakewebrtcvcmfactory.h', 68 'media/webrtc/fakewebrtcvideocapturemodule.h', 69 'media/webrtc/fakewebrtcvideoengine.h', 70 'media/webrtc/fakewebrtcvoiceengine.h', 71 ], 72 }, # target libjingle_unittest_main 73 { 74 'target_name': 'libjingle_media_unittest', 75 'type': 'executable', 76 'dependencies': [ 77 '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils', 78 'libjingle.gyp:libjingle_media', 79 'libjingle_unittest_main', 80 ], 81 'sources': [ 82 'media/base/capturemanager_unittest.cc', 83 'media/base/codec_unittest.cc', 84 'media/base/rtpdataengine_unittest.cc', 85 'media/base/rtpdump_unittest.cc', 86 'media/base/rtputils_unittest.cc', 87 'media/base/streamparams_unittest.cc', 88 'media/base/testutils.cc', 89 'media/base/testutils.h', 90 'media/base/videoadapter_unittest.cc', 91 'media/base/videocapturer_unittest.cc', 92 'media/base/videocommon_unittest.cc', 93 'media/base/videoengine_unittest.h', 94 'media/base/videoframe_unittest.h', 95 'media/devices/dummydevicemanager_unittest.cc', 96 'media/devices/filevideocapturer_unittest.cc', 97 'media/sctp/sctpdataengine_unittest.cc', 98 'media/webrtc/simulcast_unittest.cc', 99 'media/webrtc/webrtcmediaengine_unittest.cc', 100 'media/webrtc/webrtcvideocapturer_unittest.cc', 101 'media/webrtc/webrtcvideoframe_unittest.cc', 102 'media/webrtc/webrtcvideoframefactory_unittest.cc', 103 # Disabled because some tests fail. 104 # TODO(ronghuawu): Reenable these tests. 105 # 'media/devices/devicemanager_unittest.cc', 106 'media/webrtc/webrtcvideoengine2_unittest.cc', 107 'media/webrtc/webrtcvoiceengine_unittest.cc', 108 ], 109 'conditions': [ 110 ['OS=="win"', { 111 'conditions': [ 112 ['use_openssl==0', { 113 'dependencies': [ 114 '<(DEPTH)/net/third_party/nss/ssl.gyp:libssl', 115 '<(DEPTH)/third_party/nss/nss.gyp:nspr', 116 '<(DEPTH)/third_party/nss/nss.gyp:nss', 117 ], 118 }], 119 ], 120 'msvs_settings': { 121 'VCLinkerTool': { 122 'AdditionalDependencies': [ 123 # TODO(ronghuawu): Since we've included strmiids in 124 # libjingle_media target, we shouldn't need this here. 125 # Find out why it doesn't work without this. 126 'strmiids.lib', 127 ], 128 }, 129 }, 130 }], 131 ['OS=="win" and clang==1', { 132 'msvs_settings': { 133 'VCCLCompilerTool': { 134 'AdditionalOptions': [ 135 # Disable warnings failing when compiling with Clang on Windows. 136 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366 137 '-Wno-unused-function', 138 ], 139 }, 140 }, 141 },], 142 ['OS=="ios"', { 143 'sources!': [ 144 'media/sctp/sctpdataengine_unittest.cc', 145 ], 146 }], 147 ], 148 }, # target libjingle_media_unittest 149 { 150 'target_name': 'libjingle_p2p_unittest', 151 'type': 'executable', 152 'dependencies': [ 153 '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils', 154 'libjingle.gyp:libjingle', 155 'libjingle.gyp:libjingle_peerconnection', 156 'libjingle.gyp:libjingle_p2p', 157 'libjingle_unittest_main', 158 ], 159 'include_dirs': [ 160 '<(DEPTH)/third_party/libsrtp/srtp', 161 ], 162 'sources': [ 163 'session/media/bundlefilter_unittest.cc', 164 'session/media/channel_unittest.cc', 165 'session/media/channelmanager_unittest.cc', 166 'session/media/currentspeakermonitor_unittest.cc', 167 'session/media/mediasession_unittest.cc', 168 'session/media/rtcpmuxfilter_unittest.cc', 169 'session/media/srtpfilter_unittest.cc', 170 ], 171 'conditions': [ 172 ['build_libsrtp==1', { 173 'dependencies': [ 174 '<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp', 175 ], 176 }], 177 ['OS=="win"', { 178 'msvs_settings': { 179 'VCLinkerTool': { 180 'AdditionalDependencies': [ 181 'strmiids.lib', 182 ], 183 }, 184 }, 185 }], 186 ], 187 }, # target libjingle_p2p_unittest 188 { 189 'target_name': 'libjingle_peerconnection_unittest', 190 'type': '<(gtest_target_type)', 191 'dependencies': [ 192 '<(DEPTH)/testing/gmock.gyp:gmock', 193 '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils', 194 '<(webrtc_root)/common.gyp:webrtc_common', 195 'libjingle.gyp:libjingle', 196 'libjingle.gyp:libjingle_p2p', 197 'libjingle.gyp:libjingle_peerconnection', 198 'libjingle_unittest_main', 199 ], 200 'direct_dependent_settings': { 201 'include_dirs': [ 202 '<(DEPTH)/testing/gmock/include', 203 ], 204 }, 205 'sources': [ 206 'app/webrtc/datachannel_unittest.cc', 207 'app/webrtc/dtlsidentitystore_unittest.cc', 208 'app/webrtc/dtmfsender_unittest.cc', 209 'app/webrtc/fakemetricsobserver.cc', 210 'app/webrtc/fakemetricsobserver.h', 211 'app/webrtc/jsepsessiondescription_unittest.cc', 212 'app/webrtc/localaudiosource_unittest.cc', 213 'app/webrtc/mediastream_unittest.cc', 214 'app/webrtc/peerconnection_unittest.cc', 215 'app/webrtc/peerconnectionendtoend_unittest.cc', 216 'app/webrtc/peerconnectionfactory_unittest.cc', 217 'app/webrtc/peerconnectioninterface_unittest.cc', 218 # 'app/webrtc/peerconnectionproxy_unittest.cc', 219 'app/webrtc/remotevideocapturer_unittest.cc', 220 'app/webrtc/rtpsenderreceiver_unittest.cc', 221 'app/webrtc/statscollector_unittest.cc', 222 'app/webrtc/test/fakeaudiocapturemodule.cc', 223 'app/webrtc/test/fakeaudiocapturemodule.h', 224 'app/webrtc/test/fakeaudiocapturemodule_unittest.cc', 225 'app/webrtc/test/fakeconstraints.h', 226 'app/webrtc/test/fakedatachannelprovider.h', 227 'app/webrtc/test/fakedtlsidentitystore.h', 228 'app/webrtc/test/fakeperiodicvideocapturer.h', 229 'app/webrtc/test/fakevideotrackrenderer.h', 230 'app/webrtc/test/mockpeerconnectionobservers.h', 231 'app/webrtc/test/peerconnectiontestwrapper.h', 232 'app/webrtc/test/peerconnectiontestwrapper.cc', 233 'app/webrtc/test/testsdpstrings.h', 234 'app/webrtc/videosource_unittest.cc', 235 'app/webrtc/videotrack_unittest.cc', 236 'app/webrtc/webrtcsdp_unittest.cc', 237 'app/webrtc/webrtcsession_unittest.cc', 238 ], 239 'conditions': [ 240 ['OS=="android"', { 241 'sources': [ 242 'app/webrtc/test/androidtestinitializer.cc', 243 'app/webrtc/test/androidtestinitializer.h', 244 ], 245 'dependencies': [ 246 '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code', 247 'libjingle.gyp:libjingle_peerconnection_jni', 248 ], 249 }], 250 ['OS=="win" and clang==1', { 251 'msvs_settings': { 252 'VCCLCompilerTool': { 253 'AdditionalOptions': [ 254 # Disable warnings failing when compiling with Clang on Windows. 255 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366 256 '-Wno-unused-function', 257 ], 258 }, 259 }, 260 }], 261 ], 262 }, # target libjingle_peerconnection_unittest 263 ], 264 'conditions': [ 265 ['OS=="linux"', { 266 'variables': { 267 'junit_jar': '<(DEPTH)/third_party/junit-jar/junit-4.11.jar', 268 }, 269 'targets': [ 270 { 271 'target_name': 'libjingle_peerconnection_test_jar', 272 'type': 'none', 273 'dependencies': [ 274 'libjingle.gyp:libjingle_peerconnection_jar', 275 ], 276 'actions': [ 277 { 278 'variables': { 279 'java_src_dir': 'app/webrtc/javatests/src', 280 'java_files': [ 281 'app/webrtc/java/testcommon/src/org/webrtc/PeerConnectionTest.java', 282 'app/webrtc/javatests/src/org/webrtc/PeerConnectionTestJava.java', 283 ], 284 }, 285 'action_name': 'create_jar', 286 'inputs': [ 287 'build/build_jar.sh', 288 '<@(java_files)', 289 '<(PRODUCT_DIR)/libjingle_peerconnection.jar', 290 '<(PRODUCT_DIR)/lib/libjingle_peerconnection_so.so', 291 '<(junit_jar)', 292 ], 293 'outputs': [ 294 '<(PRODUCT_DIR)/libjingle_peerconnection_test.jar', 295 ], 296 'action': [ 297 'build/build_jar.sh', '<(java_home)', '<@(_outputs)', 298 '<(INTERMEDIATE_DIR)', 299 '<(java_src_dir):<(PRODUCT_DIR)/libjingle_peerconnection.jar:<(junit_jar)', 300 '<@(java_files)' 301 ], 302 }, 303 ], 304 }, 305 { 306 'target_name': 'libjingle_peerconnection_java_unittest', 307 'type': 'none', 308 'actions': [ 309 { 310 'action_name': 'copy libjingle_peerconnection_java_unittest', 311 'inputs': [ 312 'app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh', 313 '<(PRODUCT_DIR)/libjingle_peerconnection_test_jar', 314 '<(junit_jar)', 315 ], 316 'outputs': [ 317 '<(PRODUCT_DIR)/libjingle_peerconnection_java_unittest', 318 ], 319 'action': [ 320 'bash', '-c', 321 'rm -f <(PRODUCT_DIR)/libjingle_peerconnection_java_unittest && ' 322 'sed -e "s@GYP_JAVA_HOME@<(java_home)@" ' 323 '< app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh ' 324 '> <(PRODUCT_DIR)/libjingle_peerconnection_java_unittest && ' 325 'cp <(junit_jar) <(PRODUCT_DIR) && ' 326 'chmod u+x <(PRODUCT_DIR)/libjingle_peerconnection_java_unittest' 327 ], 328 }, 329 ], 330 }, 331 ], 332 }], 333 ['OS=="android"', { 334 'targets': [ 335 { 336 'target_name': 'libjingle_peerconnection_android_unittest', 337 'type': 'none', 338 'dependencies': [ 339 'libjingle.gyp:libjingle_peerconnection_java', 340 ], 341 'variables': { 342 'apk_name': 'libjingle_peerconnection_android_unittest', 343 'java_in_dir': 'app/webrtc/androidtests', 344 'resource_dir': 'app/webrtc/androidtests/res', 345 'additional_src_dirs': ['app/webrtc/java/testcommon'], 346 'native_lib_target': 'libjingle_peerconnection_so', 347 'is_test_apk': 1, 348 }, 349 'includes': [ '../build/java_apk.gypi' ], 350 }, 351 ], # targets 352 }], # OS=="android" 353 ['OS=="ios" or (OS=="mac" and target_arch!="ia32")', { 354 # The >=10.7 above is required to make ARC link cleanly (e.g. as 355 # opposed to _compile_ cleanly, which the library under test 356 # does just fine on 10.6 too). 357 'targets': [ 358 { 359 'target_name': 'libjingle_peerconnection_objc_test', 360 'type': 'executable', 361 'includes': [ 'build/objc_app.gypi' ], 362 'dependencies': [ 363 '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils', 364 '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', 365 'libjingle.gyp:libjingle_peerconnection_objc', 366 ], 367 'sources': [ 368 'app/webrtc/objctests/RTCPeerConnectionSyncObserver.h', 369 'app/webrtc/objctests/RTCPeerConnectionSyncObserver.m', 370 'app/webrtc/objctests/RTCPeerConnectionTest.mm', 371 'app/webrtc/objctests/RTCSessionDescriptionSyncObserver.h', 372 'app/webrtc/objctests/RTCSessionDescriptionSyncObserver.m', 373 # TODO(fischman): figure out if this works for ios or if it 374 # needs a GUI driver. 375 'app/webrtc/objctests/mac/main.mm', 376 ], 377 'conditions': [ 378 ['OS=="mac"', { 379 'xcode_settings': { 380 # Need to build against 10.7 framework for full ARC support 381 # on OSX. 382 'MACOSX_DEPLOYMENT_TARGET' : '10.7', 383 # common.gypi enables this for mac but we want this to be 384 # disabled like it is for ios. 385 'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO', 386 }, 387 }], 388 ], 389 }, # target libjingle_peerconnection_objc_test 390 { 391 'target_name': 'apprtc_signaling_gunit_test', 392 'type': 'executable', 393 'includes': [ 'build/objc_app.gypi' ], 394 'dependencies': [ 395 '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils', 396 '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', 397 '<(DEPTH)/third_party/ocmock/ocmock.gyp:ocmock', 398 '<(webrtc_root)/webrtc_examples.gyp:apprtc_signaling', 399 ], 400 'sources': [ 401 'app/webrtc/objctests/mac/main.mm', 402 '<(webrtc_root)/examples/objc/AppRTCDemo/tests/ARDAppClientTest.mm', 403 ], 404 'conditions': [ 405 ['OS=="mac"', { 406 'xcode_settings': { 407 'MACOSX_DEPLOYMENT_TARGET' : '10.8', 408 }, 409 }], 410 ], 411 }, # target apprtc_signaling_gunit_test 412 ], 413 }], 414 ['OS=="android"', { 415 'targets': [ 416 { 417 'target_name': 'libjingle_peerconnection_unittest_apk_target', 418 'type': 'none', 419 'dependencies': [ 420 '<(DEPTH)/webrtc/build/apk_tests.gyp:libjingle_peerconnection_unittest_apk', 421 ], 422 }, 423 ], 424 }], 425 ['test_isolation_mode != "noop"', { 426 'targets': [ 427 { 428 'target_name': 'libjingle_media_unittest_run', 429 'type': 'none', 430 'dependencies': [ 431 'libjingle_media_unittest', 432 ], 433 'includes': [ 434 'build/isolate.gypi', 435 ], 436 'sources': [ 437 'libjingle_media_unittest.isolate', 438 ], 439 }, 440 { 441 'target_name': 'libjingle_p2p_unittest_run', 442 'type': 'none', 443 'dependencies': [ 444 'libjingle_p2p_unittest', 445 ], 446 'includes': [ 447 'build/isolate.gypi', 448 ], 449 'sources': [ 450 'libjingle_p2p_unittest.isolate', 451 ], 452 }, 453 { 454 'target_name': 'libjingle_peerconnection_unittest_run', 455 'type': 'none', 456 'dependencies': [ 457 'libjingle_peerconnection_unittest', 458 ], 459 'includes': [ 460 'build/isolate.gypi', 461 ], 462 'sources': [ 463 'libjingle_peerconnection_unittest.isolate', 464 ], 465 }, 466 ], 467 }], 468 ], 469} 470