Home | History | Annotate | Download | only in talk
      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   'targets': [
     31     {
     32       # TODO(ronghuawu): Use gtest.gyp from chromium.
     33       'target_name': 'gunit',
     34       'type': 'static_library',
     35       'sources': [
     36         '<(DEPTH)/testing/gtest/src/gtest-all.cc',
     37       ],
     38       'include_dirs': [
     39         '<(DEPTH)/testing/gtest/include',
     40         '<(DEPTH)/testing/gtest',
     41       ],
     42       'defines': ['_VARIADIC_MAX=10'],
     43       'direct_dependent_settings': {
     44         'defines': [
     45           '_VARIADIC_MAX=10',
     46         ],
     47         'include_dirs': [
     48           '<(DEPTH)/testing/gtest/include',
     49         ],
     50       },
     51       'conditions': [
     52         ['OS=="android"', {
     53           'include_dirs': [
     54             '<(android_ndk_include)',
     55           ]
     56         }],
     57       ],
     58     },  # target gunit
     59     {
     60       'target_name': 'libjingle_unittest_main',
     61       'type': 'static_library',
     62       'dependencies': [
     63         '<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',
     64         'gunit',
     65       ],
     66       'direct_dependent_settings': {
     67         'include_dirs': [
     68           '<(DEPTH)/third_party/libyuv/include',
     69         ],
     70       },
     71       'sources': [
     72         'base/unittest_main.cc',
     73         # Also use this as a convenient dumping ground for misc files that are
     74         # included by multiple targets below.
     75         'base/fakecpumonitor.h',
     76         'base/fakenetwork.h',
     77         'base/fakesslidentity.h',
     78         'base/faketaskrunner.h',
     79         'base/gunit.h',
     80         'base/testbase64.h',
     81         'base/testechoserver.h',
     82         'base/win32toolhelp.h',
     83         'media/base/fakecapturemanager.h',
     84         'media/base/fakemediaengine.h',
     85         'media/base/fakemediaprocessor.h',
     86         'media/base/fakenetworkinterface.h',
     87         'media/base/fakertp.h',
     88         'media/base/fakevideocapturer.h',
     89         'media/base/fakevideorenderer.h',
     90         'media/base/nullvideoframe.h',
     91         'media/base/nullvideorenderer.h',
     92         'media/base/testutils.cc',
     93         'media/base/testutils.h',
     94         'media/devices/fakedevicemanager.h',
     95         'media/webrtc/dummyinstantiation.cc',
     96         'media/webrtc/fakewebrtccommon.h',
     97         'media/webrtc/fakewebrtcdeviceinfo.h',
     98         'media/webrtc/fakewebrtcvcmfactory.h',
     99         'media/webrtc/fakewebrtcvideocapturemodule.h',
    100         'media/webrtc/fakewebrtcvideoengine.h',
    101         'media/webrtc/fakewebrtcvoiceengine.h',
    102       ],
    103     },  # target libjingle_unittest_main
    104     {
    105       'target_name': 'libjingle_unittest',
    106       'type': 'executable',
    107       'includes': [ 'build/ios_tests.gypi', ],
    108       'dependencies': [
    109         'gunit',
    110         'libjingle.gyp:libjingle',
    111         'libjingle_unittest_main',
    112       ],
    113       'sources': [
    114         'base/asynchttprequest_unittest.cc',
    115         'base/atomicops_unittest.cc',
    116         'base/autodetectproxy_unittest.cc',
    117         'base/bandwidthsmoother_unittest.cc',
    118         'base/base64_unittest.cc',
    119         'base/basictypes_unittest.cc',
    120         'base/bind_unittest.cc',
    121         'base/buffer_unittest.cc',
    122         'base/bytebuffer_unittest.cc',
    123         'base/byteorder_unittest.cc',
    124         'base/callback_unittest.cc',
    125         'base/cpumonitor_unittest.cc',
    126         'base/crc32_unittest.cc',
    127         'base/criticalsection_unittest.cc',
    128         'base/event_unittest.cc',
    129         'base/filelock_unittest.cc',
    130         'base/fileutils_unittest.cc',
    131         'base/helpers_unittest.cc',
    132         'base/httpbase_unittest.cc',
    133         'base/httpcommon_unittest.cc',
    134         'base/httpserver_unittest.cc',
    135         'base/ipaddress_unittest.cc',
    136         'base/logging_unittest.cc',
    137         'base/md5digest_unittest.cc',
    138         'base/messagedigest_unittest.cc',
    139         'base/messagequeue_unittest.cc',
    140         'base/multipart_unittest.cc',
    141         'base/nat_unittest.cc',
    142         'base/network_unittest.cc',
    143         'base/nullsocketserver_unittest.cc',
    144         'base/optionsfile_unittest.cc',
    145         'base/pathutils_unittest.cc',
    146         'base/physicalsocketserver_unittest.cc',
    147         'base/profiler_unittest.cc',
    148         'base/proxy_unittest.cc',
    149         'base/proxydetect_unittest.cc',
    150         'base/ratelimiter_unittest.cc',
    151         'base/ratetracker_unittest.cc',
    152         'base/referencecountedsingletonfactory_unittest.cc',
    153         'base/rollingaccumulator_unittest.cc',
    154         'base/scopedptrcollection_unittest.cc',
    155         'base/sha1digest_unittest.cc',
    156         'base/sharedexclusivelock_unittest.cc',
    157         'base/signalthread_unittest.cc',
    158         'base/sigslot_unittest.cc',
    159         'base/socket_unittest.cc',
    160         'base/socket_unittest.h',
    161         'base/socketaddress_unittest.cc',
    162         'base/stream_unittest.cc',
    163         'base/stringencode_unittest.cc',
    164         'base/stringutils_unittest.cc',
    165         # TODO(ronghuawu): Reenable this test.
    166         # 'base/systeminfo_unittest.cc',
    167         'base/task_unittest.cc',
    168         'base/testclient_unittest.cc',
    169         'base/thread_unittest.cc',
    170         'base/timeutils_unittest.cc',
    171         'base/urlencode_unittest.cc',
    172         'base/versionparsing_unittest.cc',
    173         'base/virtualsocket_unittest.cc',
    174         # TODO(ronghuawu): Reenable this test.
    175         # 'base/windowpicker_unittest.cc',
    176         'xmllite/qname_unittest.cc',
    177         'xmllite/xmlbuilder_unittest.cc',
    178         'xmllite/xmlelement_unittest.cc',
    179         'xmllite/xmlnsstack_unittest.cc',
    180         'xmllite/xmlparser_unittest.cc',
    181         'xmllite/xmlprinter_unittest.cc',
    182         'xmpp/fakexmppclient.h',
    183         'xmpp/hangoutpubsubclient_unittest.cc',
    184         'xmpp/jid_unittest.cc',
    185         'xmpp/mucroomconfigtask_unittest.cc',
    186         'xmpp/mucroomdiscoverytask_unittest.cc',
    187         'xmpp/mucroomlookuptask_unittest.cc',
    188         'xmpp/mucroomuniquehangoutidtask_unittest.cc',
    189         'xmpp/pingtask_unittest.cc',
    190         'xmpp/pubsubclient_unittest.cc',
    191         'xmpp/pubsubtasks_unittest.cc',
    192         'xmpp/util_unittest.cc',
    193         'xmpp/util_unittest.h',
    194         'xmpp/xmppengine_unittest.cc',
    195         'xmpp/xmpplogintask_unittest.cc',
    196         'xmpp/xmppstanzaparser_unittest.cc',
    197       ],  # sources
    198       'conditions': [
    199         ['OS=="linux"', {
    200           'sources': [
    201             'base/latebindingsymboltable_unittest.cc',
    202             # TODO(ronghuawu): Reenable this test.
    203             # 'base/linux_unittest.cc',
    204             'base/linuxfdwalk_unittest.cc',
    205           ],
    206         }],
    207         ['OS=="win"', {
    208           'sources': [
    209             'base/win32_unittest.cc',
    210             'base/win32regkey_unittest.cc',
    211             'base/win32socketserver_unittest.cc',
    212             'base/win32toolhelp_unittest.cc',
    213             'base/win32window_unittest.cc',
    214             'base/win32windowpicker_unittest.cc',
    215             'base/winfirewall_unittest.cc',
    216           ],
    217           'sources!': [
    218             # TODO(ronghuawu): Fix TestUdpReadyToSendIPv6 on windows bot
    219             # then reenable these tests.
    220             'base/physicalsocketserver_unittest.cc',
    221             'base/socket_unittest.cc',
    222             'base/win32socketserver_unittest.cc',
    223             'base/win32windowpicker_unittest.cc',
    224           ],
    225         }],
    226         ['OS=="mac"', {
    227           'sources': [
    228             'base/macsocketserver_unittest.cc',
    229             'base/macutils_unittest.cc',
    230             'base/macwindowpicker_unittest.cc',
    231           ],
    232         }],
    233         ['os_posix==1', {
    234           'sources': [
    235             'base/sslidentity_unittest.cc',
    236             'base/sslstreamadapter_unittest.cc',
    237           ],
    238         }],
    239       ],  # conditions
    240     },  # target libjingle_unittest
    241     {
    242       'target_name': 'libjingle_sound_unittest',
    243       'type': 'executable',
    244       'dependencies': [
    245         'gunit',
    246         'libjingle.gyp:libjingle_sound',
    247         'libjingle_unittest_main',
    248       ],
    249       'sources': [
    250         'sound/automaticallychosensoundsystem_unittest.cc',
    251       ],
    252     },  # target libjingle_sound_unittest
    253     {
    254       'target_name': 'libjingle_media_unittest',
    255       'type': 'executable',
    256       'dependencies': [
    257         'gunit',
    258         'libjingle.gyp:libjingle_media',
    259         'libjingle_unittest_main',
    260       ],
    261       # TODO(ronghuawu): Avoid the copies.
    262       # https://code.google.com/p/libjingle/issues/detail?id=398
    263       'copies': [
    264         {
    265           'destination': '<(DEPTH)/../talk/media/testdata',
    266           'files': [
    267             'media/testdata/1.frame_plus_1.byte',
    268             'media/testdata/captured-320x240-2s-48.frames',
    269             'media/testdata/h264-svc-99-640x360.rtpdump',
    270             'media/testdata/video.rtpdump',
    271             'media/testdata/voice.rtpdump',
    272           ],
    273         },
    274       ],
    275       'sources': [
    276         # TODO(ronghuawu): Reenable this test.
    277         # 'media/base/capturemanager_unittest.cc',
    278         'media/base/codec_unittest.cc',
    279         'media/base/filemediaengine_unittest.cc',
    280         'media/base/rtpdataengine_unittest.cc',
    281         'media/base/rtpdump_unittest.cc',
    282         'media/base/rtputils_unittest.cc',
    283         'media/base/testutils.cc',
    284         'media/base/testutils.h',
    285         'media/base/videocapturer_unittest.cc',
    286         'media/base/videocommon_unittest.cc',
    287         'media/base/videoengine_unittest.h',
    288         'media/devices/dummydevicemanager_unittest.cc',
    289         'media/devices/filevideocapturer_unittest.cc',
    290         'media/sctp/sctpdataengine_unittest.cc',
    291         'media/webrtc/webrtcpassthroughrender_unittest.cc',
    292         'media/webrtc/webrtcvideocapturer_unittest.cc',
    293         # Omitted because depends on non-open-source testdata files.
    294         # 'media/base/videoframe_unittest.h',
    295         # 'media/webrtc/webrtcvideoframe_unittest.cc',
    296 
    297         # Disabled because some tests fail.
    298         # TODO(ronghuawu): Reenable these tests.
    299         # 'media/devices/devicemanager_unittest.cc',
    300         'media/webrtc/webrtcvideoengine_unittest.cc',
    301         'media/webrtc/webrtcvideoengine2_unittest.cc',
    302         'media/webrtc/webrtcvideoengine2_unittest.h',
    303         'media/webrtc/webrtcvoiceengine_unittest.cc',
    304       ],
    305       'conditions': [
    306         ['OS=="win"', {
    307           'msvs_settings': {
    308             'VCLinkerTool': {
    309               'AdditionalDependencies': [
    310                 # TODO(ronghuawu): Since we've included strmiids in
    311                 # libjingle_media target, we shouldn't need this here.
    312                 # Find out why it doesn't work without this.
    313                 'strmiids.lib',
    314               ],
    315             },
    316           },
    317         }],
    318         ['OS=="ios"', {
    319           'sources!': [
    320             'media/sctp/sctpdataengine_unittest.cc',
    321           ],
    322         }],
    323       ],
    324     },  # target libjingle_media_unittest
    325     {
    326       'target_name': 'libjingle_p2p_unittest',
    327       'type': 'executable',
    328       'dependencies': [
    329         '<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp',
    330         'gunit',
    331         'libjingle.gyp:libjingle',
    332         'libjingle.gyp:libjingle_p2p',
    333         'libjingle_unittest_main',
    334       ],
    335       'include_dirs': [
    336         '<(DEPTH)/third_party/libsrtp/srtp',
    337       ],
    338       'sources': [
    339         'p2p/base/dtlstransportchannel_unittest.cc',
    340         'p2p/base/fakesession.h',
    341         'p2p/base/p2ptransportchannel_unittest.cc',
    342         'p2p/base/port_unittest.cc',
    343         'p2p/base/portallocatorsessionproxy_unittest.cc',
    344         'p2p/base/pseudotcp_unittest.cc',
    345         'p2p/base/relayport_unittest.cc',
    346         'p2p/base/relayserver_unittest.cc',
    347         'p2p/base/session_unittest.cc',
    348         'p2p/base/stun_unittest.cc',
    349         'p2p/base/stunport_unittest.cc',
    350         'p2p/base/stunrequest_unittest.cc',
    351         'p2p/base/stunserver_unittest.cc',
    352         'p2p/base/testrelayserver.h',
    353         'p2p/base/teststunserver.h',
    354         'p2p/base/testturnserver.h',
    355         'p2p/base/transport_unittest.cc',
    356         'p2p/base/transportdescriptionfactory_unittest.cc',
    357         'p2p/client/connectivitychecker_unittest.cc',
    358         'p2p/client/fakeportallocator.h',
    359         'p2p/client/portallocator_unittest.cc',
    360         'session/media/bundlefilter_unittest.cc',
    361         'session/media/channel_unittest.cc',
    362         'session/media/channelmanager_unittest.cc',
    363         'session/media/currentspeakermonitor_unittest.cc',
    364         'session/media/mediarecorder_unittest.cc',
    365         'session/media/mediamessages_unittest.cc',
    366         'session/media/mediasession_unittest.cc',
    367         'session/media/mediasessionclient_unittest.cc',
    368         'session/media/rtcpmuxfilter_unittest.cc',
    369         'session/media/srtpfilter_unittest.cc',
    370       ],
    371       'conditions': [
    372         ['OS=="win"', {
    373           'msvs_settings': {
    374             'VCLinkerTool': {
    375               'AdditionalDependencies': [
    376                 'strmiids.lib',
    377               ],
    378             },
    379           },
    380         }],
    381       ],
    382     },  # target libjingle_p2p_unittest
    383     {
    384       'target_name': 'libjingle_peerconnection_unittest',
    385       'type': 'executable',
    386       'dependencies': [
    387         '<(DEPTH)/testing/gmock.gyp:gmock',
    388         'gunit',
    389         'libjingle.gyp:libjingle',
    390         'libjingle.gyp:libjingle_p2p',
    391         'libjingle.gyp:libjingle_peerconnection',
    392         'libjingle_unittest_main',
    393       ],
    394       'direct_dependent_settings': {
    395         'include_dirs': [
    396           '<(DEPTH)/testing/gmock/include',
    397         ],
    398       },
    399       'sources': [
    400         'app/webrtc/datachannel_unittest.cc',
    401         'app/webrtc/dtmfsender_unittest.cc',
    402         'app/webrtc/jsepsessiondescription_unittest.cc',
    403         'app/webrtc/localaudiosource_unittest.cc',
    404         'app/webrtc/mediastream_unittest.cc',
    405         'app/webrtc/mediastreamhandler_unittest.cc',
    406         'app/webrtc/mediastreamsignaling_unittest.cc',
    407         'app/webrtc/peerconnection_unittest.cc',
    408         'app/webrtc/peerconnectionendtoend_unittest.cc',
    409         'app/webrtc/peerconnectionfactory_unittest.cc',
    410         'app/webrtc/peerconnectioninterface_unittest.cc',
    411         # 'app/webrtc/peerconnectionproxy_unittest.cc',
    412         'app/webrtc/remotevideocapturer_unittest.cc',
    413         'app/webrtc/sctputils.cc',
    414         'app/webrtc/statscollector_unittest.cc',
    415         'app/webrtc/test/fakeaudiocapturemodule.cc',
    416         'app/webrtc/test/fakeaudiocapturemodule.h',
    417         'app/webrtc/test/fakeaudiocapturemodule_unittest.cc',
    418         'app/webrtc/test/fakeconstraints.h',
    419         'app/webrtc/test/fakedatachannelprovider.h',
    420         'app/webrtc/test/fakedtlsidentityservice.h',
    421         'app/webrtc/test/fakemediastreamsignaling.h',
    422         'app/webrtc/test/fakeperiodicvideocapturer.h',
    423         'app/webrtc/test/fakevideotrackrenderer.h',
    424         'app/webrtc/test/mockpeerconnectionobservers.h',
    425         'app/webrtc/test/peerconnectiontestwrapper.h',
    426         'app/webrtc/test/peerconnectiontestwrapper.cc',
    427         'app/webrtc/test/testsdpstrings.h',
    428         'app/webrtc/videosource_unittest.cc',
    429         'app/webrtc/videotrack_unittest.cc',
    430         'app/webrtc/webrtcsdp_unittest.cc',
    431         'app/webrtc/webrtcsession_unittest.cc',
    432       ],
    433       'conditions': [
    434         ['OS=="android"', {
    435           # We want gmock features that use tr1::tuple, but we currently
    436           # don't support the variadic templates used by libstdc++'s
    437           # implementation. gmock supports this scenario by providing its
    438           # own implementation but we must opt in to it.
    439           'defines': [
    440             'GTEST_USE_OWN_TR1_TUPLE=1',
    441             # GTEST_USE_OWN_TR1_TUPLE only works if GTEST_HAS_TR1_TUPLE is set.
    442             # gmock r625 made it so that GTEST_HAS_TR1_TUPLE is set to 0
    443             # automatically on android, so it has to be set explicitly here.
    444             'GTEST_HAS_TR1_TUPLE=1',
    445            ],
    446         }],
    447       ],
    448     },  # target libjingle_peerconnection_unittest
    449   ],
    450   'conditions': [
    451     ['OS=="linux"', {
    452       'targets': [
    453         {
    454           'target_name': 'libjingle_peerconnection_test_jar',
    455           'type': 'none',
    456           'actions': [
    457             {
    458               'variables': {
    459                 'java_src_dir': 'app/webrtc/javatests/src',
    460                 'java_files': [
    461                   'app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java',
    462                 ],
    463               },
    464               'action_name': 'create_jar',
    465               'inputs': [
    466                 'build/build_jar.sh',
    467                 '<@(java_files)',
    468                 '<(PRODUCT_DIR)/libjingle_peerconnection.jar',
    469                 '<(DEPTH)/third_party/junit/junit-4.11.jar',
    470               ],
    471               'outputs': [
    472                 '<(PRODUCT_DIR)/libjingle_peerconnection_test.jar',
    473               ],
    474               'action': [
    475                 'build/build_jar.sh', '<(java_home)', '<@(_outputs)',
    476                 '<(INTERMEDIATE_DIR)',
    477                 '<(java_src_dir):<(PRODUCT_DIR)/libjingle_peerconnection.jar:<(DEPTH)/third_party/junit/junit-4.11.jar',
    478                 '<@(java_files)'
    479               ],
    480             },
    481           ],
    482         },
    483         {
    484           'target_name': 'libjingle_peerconnection_java_unittest',
    485           'type': 'none',
    486           'actions': [
    487             {
    488               'action_name': 'copy libjingle_peerconnection_java_unittest',
    489               'inputs': [
    490                 'app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh',
    491                 '<(PRODUCT_DIR)/libjingle_peerconnection_test_jar',
    492                 '<(DEPTH)/third_party/junit/junit-4.11.jar',
    493               ],
    494               'outputs': [
    495                 '<(PRODUCT_DIR)/libjingle_peerconnection_java_unittest',
    496               ],
    497               'action': [
    498                 'bash', '-c',
    499                 'rm -f <(PRODUCT_DIR)/libjingle_peerconnection_java_unittest && '
    500                 'sed -e "s@GYP_JAVA_HOME@<(java_home)@" '
    501                 '< app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh '
    502                 '> <(PRODUCT_DIR)/libjingle_peerconnection_java_unittest && '
    503                 'cp <(DEPTH)/third_party/junit/junit-4.11.jar <(PRODUCT_DIR) && '
    504                 'chmod u+x <(PRODUCT_DIR)/libjingle_peerconnection_java_unittest'
    505               ],
    506             },
    507           ],
    508         },
    509       ],
    510     }],
    511     ['OS=="ios" or (OS=="mac" and target_arch!="ia32" and mac_sdk>="10.7")', {
    512       # The >=10.7 above is required to make ARC link cleanly (e.g. as
    513       # opposed to _compile_ cleanly, which the library under test
    514       # does just fine on 10.6 too).
    515       'targets': [
    516         {
    517           'target_name': 'libjingle_peerconnection_objc_test',
    518           'type': 'executable',
    519           'includes': [ 'build/ios_tests.gypi', ],
    520           'dependencies': [
    521             'gunit',
    522             'libjingle.gyp:libjingle_peerconnection_objc',
    523           ],
    524           'sources': [
    525             'app/webrtc/objctests/RTCPeerConnectionSyncObserver.h',
    526             'app/webrtc/objctests/RTCPeerConnectionSyncObserver.m',
    527             'app/webrtc/objctests/RTCPeerConnectionTest.mm',
    528             'app/webrtc/objctests/RTCSessionDescriptionSyncObserver.h',
    529             'app/webrtc/objctests/RTCSessionDescriptionSyncObserver.m',
    530             # TODO(fischman): figure out if this works for ios or if it
    531             # needs a GUI driver.
    532             'app/webrtc/objctests/mac/main.mm',
    533           ],
    534           'FRAMEWORK_SEARCH_PATHS': [
    535             '$(inherited)',
    536             '$(SDKROOT)/Developer/Library/Frameworks',
    537             '$(DEVELOPER_LIBRARY_DIR)/Frameworks',
    538           ],
    539 
    540           # TODO(fischman): there is duplication here with
    541           # build/ios_tests.gypi, because for historical reasons the
    542           # mac x64 bots expect this unittest to be in a bundle
    543           # directory (.app).  Once the bots don't expect this
    544           # anymore, remove this duplication.
    545           'variables': {
    546             'infoplist_file': 'build/ios_test.plist',
    547           },
    548           'mac_bundle': 1,
    549           'mac_bundle_resources': [
    550             '<(infoplist_file)',
    551           ],
    552           # The plist is listed above so that it appears in XCode's file list,
    553           # but we don't actually want to bundle it.
    554           'mac_bundle_resources!': [
    555             '<(infoplist_file)',
    556           ],
    557           'xcode_settings': {
    558             'CLANG_ENABLE_OBJC_ARC': 'YES',
    559             # common.gypi enables this for mac but we want this to be disabled
    560             # like it is for ios.
    561             'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO',
    562             'INFOPLIST_FILE': '<(infoplist_file)',
    563           },
    564           'conditions': [
    565             ['OS=="mac"', {
    566               'xcode_settings': {
    567                 # Need to build against 10.7 framework for full ARC support
    568                 # on OSX.
    569                 'MACOSX_DEPLOYMENT_TARGET' : '10.7',
    570               },
    571             }],
    572           ],
    573         },  # target libjingle_peerconnection_objc_test
    574       ],
    575     }],
    576     ['test_isolation_mode != "noop"', {
    577       'targets': [
    578         {
    579           'target_name': 'libjingle_media_unittest_run',
    580           'type': 'none',
    581           'dependencies': [
    582             'libjingle_media_unittest',
    583           ],
    584           'includes': [
    585             'build/isolate.gypi',
    586             'libjingle_media_unittest.isolate',
    587           ],
    588           'sources': [
    589             'libjingle_media_unittest.isolate',
    590           ],
    591         },
    592         {
    593           'target_name': 'libjingle_p2p_unittest_run',
    594           'type': 'none',
    595           'dependencies': [
    596             'libjingle_p2p_unittest',
    597           ],
    598           'includes': [
    599             'build/isolate.gypi',
    600             'libjingle_p2p_unittest.isolate',
    601           ],
    602           'sources': [
    603             'libjingle_p2p_unittest.isolate',
    604           ],
    605         },
    606         {
    607           'target_name': 'libjingle_peerconnection_unittest_run',
    608           'type': 'none',
    609           'dependencies': [
    610             'libjingle_peerconnection_unittest',
    611           ],
    612           'includes': [
    613             'build/isolate.gypi',
    614             'libjingle_peerconnection_unittest.isolate',
    615           ],
    616           'sources': [
    617             'libjingle_peerconnection_unittest.isolate',
    618           ],
    619         },
    620         {
    621           'target_name': 'libjingle_sound_unittest_run',
    622           'type': 'none',
    623           'dependencies': [
    624             'libjingle_sound_unittest',
    625           ],
    626           'includes': [
    627             'build/isolate.gypi',
    628             'libjingle_sound_unittest.isolate',
    629           ],
    630           'sources': [
    631             'libjingle_sound_unittest.isolate',
    632           ],
    633         },
    634         {
    635           'target_name': 'libjingle_unittest_run',
    636           'type': 'none',
    637           'dependencies': [
    638             'libjingle_unittest',
    639           ],
    640           'includes': [
    641             'build/isolate.gypi',
    642             'libjingle_unittest.isolate',
    643           ],
    644           'sources': [
    645             'libjingle_unittest.isolate',
    646           ],
    647         },
    648       ],
    649     }],
    650   ],
    651 }
    652