blob: aba09ed575d021e628a85da936b248708a6c0953 [file] [log] [blame]
henrike@webrtc.org28e20752013-07-10 00:45:36 +00001#
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': [
henrike@webrtc.org723d6832013-07-12 16:04:50 +000036 '<(DEPTH)/testing/gtest/src/gtest-all.cc',
henrike@webrtc.org28e20752013-07-10 00:45:36 +000037 ],
38 'include_dirs': [
henrike@webrtc.org723d6832013-07-12 16:04:50 +000039 '<(DEPTH)/testing/gtest/include',
40 '<(DEPTH)/testing/gtest',
henrike@webrtc.org28e20752013-07-10 00:45:36 +000041 ],
42 'direct_dependent_settings': {
43 'include_dirs': [
henrike@webrtc.org723d6832013-07-12 16:04:50 +000044 '<(DEPTH)/testing/gtest/include',
henrike@webrtc.org28e20752013-07-10 00:45:36 +000045 ],
46 },
47 'conditions': [
48 ['OS=="android"', {
49 'include_dirs': [
50 '<(android_ndk_include)',
51 ]
52 }],
53 ],
54 }, # target gunit
55 {
56 'target_name': 'libjingle_unittest_main',
57 'type': 'static_library',
58 'dependencies': [
59 '<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',
60 'gunit',
61 ],
62 'direct_dependent_settings': {
63 'include_dirs': [
64 '<(DEPTH)/third_party/libyuv/include',
65 ],
66 },
67 'sources': [
68 'base/unittest_main.cc',
69 # Also use this as a convenient dumping ground for misc files that are
70 # included by multiple targets below.
71 'base/fakecpumonitor.h',
72 'base/fakenetwork.h',
73 'base/fakesslidentity.h',
74 'base/faketaskrunner.h',
75 'base/gunit.h',
76 'base/testbase64.h',
77 'base/testechoserver.h',
78 'base/win32toolhelp.h',
79 'media/base/fakecapturemanager.h',
80 'media/base/fakemediaengine.h',
81 'media/base/fakemediaprocessor.h',
82 'media/base/fakenetworkinterface.h',
83 'media/base/fakertp.h',
84 'media/base/fakevideocapturer.h',
85 'media/base/fakevideorenderer.h',
86 'media/base/nullvideoframe.h',
87 'media/base/nullvideorenderer.h',
88 'media/base/testutils.cc',
89 'media/base/testutils.h',
90 'media/devices/fakedevicemanager.h',
91 'media/webrtc/fakewebrtccommon.h',
92 'media/webrtc/fakewebrtcdeviceinfo.h',
93 'media/webrtc/fakewebrtcvcmfactory.h',
94 'media/webrtc/fakewebrtcvideocapturemodule.h',
95 'media/webrtc/fakewebrtcvideoengine.h',
96 'media/webrtc/fakewebrtcvoiceengine.h',
97 ],
98 }, # target libjingle_unittest_main
99 {
100 'target_name': 'libjingle_unittest',
101 'type': 'executable',
102 'dependencies': [
103 'gunit',
104 'libjingle.gyp:libjingle',
105 'libjingle_unittest_main',
106 ],
107 'sources': [
108 'base/asynchttprequest_unittest.cc',
109 'base/atomicops_unittest.cc',
110 'base/autodetectproxy_unittest.cc',
111 'base/bandwidthsmoother_unittest.cc',
112 'base/base64_unittest.cc',
113 'base/basictypes_unittest.cc',
114 'base/bind_unittest.cc',
115 'base/buffer_unittest.cc',
116 'base/bytebuffer_unittest.cc',
117 'base/byteorder_unittest.cc',
118 'base/cpumonitor_unittest.cc',
119 'base/crc32_unittest.cc',
120 'base/event_unittest.cc',
121 'base/filelock_unittest.cc',
122 'base/fileutils_unittest.cc',
123 'base/helpers_unittest.cc',
henrike@webrtc.org28e20752013-07-10 00:45:36 +0000124 'base/httpbase_unittest.cc',
125 'base/httpcommon_unittest.cc',
126 'base/httpserver_unittest.cc',
127 'base/ipaddress_unittest.cc',
128 'base/logging_unittest.cc',
129 'base/md5digest_unittest.cc',
130 'base/messagedigest_unittest.cc',
131 'base/messagequeue_unittest.cc',
132 'base/multipart_unittest.cc',
133 'base/nat_unittest.cc',
134 'base/network_unittest.cc',
135 'base/nullsocketserver_unittest.cc',
136 'base/optionsfile_unittest.cc',
137 'base/pathutils_unittest.cc',
138 'base/physicalsocketserver_unittest.cc',
139 'base/profiler_unittest.cc',
140 'base/proxy_unittest.cc',
141 'base/proxydetect_unittest.cc',
142 'base/ratelimiter_unittest.cc',
143 'base/ratetracker_unittest.cc',
144 'base/referencecountedsingletonfactory_unittest.cc',
145 'base/rollingaccumulator_unittest.cc',
146 'base/sha1digest_unittest.cc',
147 'base/sharedexclusivelock_unittest.cc',
148 'base/signalthread_unittest.cc',
149 'base/sigslot_unittest.cc',
150 'base/socket_unittest.cc',
151 'base/socket_unittest.h',
152 'base/socketaddress_unittest.cc',
153 'base/stream_unittest.cc',
154 'base/stringencode_unittest.cc',
155 'base/stringutils_unittest.cc',
156 # TODO(ronghuawu): Reenable this test.
157 # 'base/systeminfo_unittest.cc',
158 'base/task_unittest.cc',
159 'base/testclient_unittest.cc',
160 'base/thread_unittest.cc',
161 'base/timeutils_unittest.cc',
162 'base/urlencode_unittest.cc',
163 'base/versionparsing_unittest.cc',
164 'base/virtualsocket_unittest.cc',
165 # TODO(ronghuawu): Reenable this test.
166 # 'base/windowpicker_unittest.cc',
167 'xmllite/qname_unittest.cc',
168 'xmllite/xmlbuilder_unittest.cc',
169 'xmllite/xmlelement_unittest.cc',
170 'xmllite/xmlnsstack_unittest.cc',
171 'xmllite/xmlparser_unittest.cc',
172 'xmllite/xmlprinter_unittest.cc',
173 'xmpp/fakexmppclient.h',
174 'xmpp/hangoutpubsubclient_unittest.cc',
175 'xmpp/jid_unittest.cc',
176 'xmpp/mucroomconfigtask_unittest.cc',
177 'xmpp/mucroomdiscoverytask_unittest.cc',
178 'xmpp/mucroomlookuptask_unittest.cc',
179 'xmpp/mucroomuniquehangoutidtask_unittest.cc',
180 'xmpp/pingtask_unittest.cc',
181 'xmpp/pubsubclient_unittest.cc',
182 'xmpp/pubsubtasks_unittest.cc',
183 'xmpp/util_unittest.cc',
184 'xmpp/util_unittest.h',
185 'xmpp/xmppengine_unittest.cc',
186 'xmpp/xmpplogintask_unittest.cc',
187 'xmpp/xmppstanzaparser_unittest.cc',
188 ], # sources
189 'conditions': [
190 ['OS=="linux"', {
191 'sources': [
192 'base/latebindingsymboltable_unittest.cc',
193 # TODO(ronghuawu): Reenable this test.
194 # 'base/linux_unittest.cc',
195 'base/linuxfdwalk_unittest.cc',
196 ],
197 }],
198 ['OS=="win"', {
199 'sources': [
200 'base/win32_unittest.cc',
201 'base/win32regkey_unittest.cc',
202 'base/win32socketserver_unittest.cc',
203 'base/win32toolhelp_unittest.cc',
204 'base/win32window_unittest.cc',
205 'base/win32windowpicker_unittest.cc',
206 'base/winfirewall_unittest.cc',
207 ],
208 'sources!': [
209 # TODO(ronghuawu): Fix TestUdpReadyToSendIPv6 on windows bot
210 # then reenable these tests.
211 'base/physicalsocketserver_unittest.cc',
212 'base/socket_unittest.cc',
213 'base/win32socketserver_unittest.cc',
214 'base/win32windowpicker_unittest.cc',
215 ],
216 }],
217 ['OS=="mac"', {
218 'sources': [
219 'base/macsocketserver_unittest.cc',
220 'base/macutils_unittest.cc',
221 'base/macwindowpicker_unittest.cc',
222 ],
223 }],
224 ['os_posix==1', {
225 'sources': [
226 'base/sslidentity_unittest.cc',
henrike@webrtc.org9de257d2013-07-17 14:42:53 +0000227 'base/sslstreamadapter_unittest.cc',
henrike@webrtc.org28e20752013-07-10 00:45:36 +0000228 ],
229 }],
230 ], # conditions
231 }, # target libjingle_unittest
232 {
233 'target_name': 'libjingle_sound_unittest',
234 'type': 'executable',
235 'dependencies': [
236 'gunit',
237 'libjingle.gyp:libjingle_sound',
238 'libjingle_unittest_main',
239 ],
240 'sources': [
241 'sound/automaticallychosensoundsystem_unittest.cc',
242 ],
243 }, # target libjingle_sound_unittest
244 {
245 'target_name': 'libjingle_media_unittest',
246 'type': 'executable',
247 'dependencies': [
248 'gunit',
249 'libjingle.gyp:libjingle_media',
250 'libjingle_unittest_main',
251 ],
252 # TODO(ronghuawu): Avoid the copies.
253 # https://code.google.com/p/libjingle/issues/detail?id=398
254 'copies': [
255 {
256 'destination': '<(DEPTH)/../talk/media/testdata',
257 'files': [
258 'media/testdata/1.frame_plus_1.byte',
259 'media/testdata/captured-320x240-2s-48.frames',
260 'media/testdata/h264-svc-99-640x360.rtpdump',
261 'media/testdata/video.rtpdump',
262 'media/testdata/voice.rtpdump',
263 ],
264 },
265 ],
266 'sources': [
267 # TODO(ronghuawu): Reenable this test.
268 # 'media/base/capturemanager_unittest.cc',
269 'media/base/codec_unittest.cc',
270 'media/base/filemediaengine_unittest.cc',
271 'media/base/rtpdataengine_unittest.cc',
272 'media/base/rtpdump_unittest.cc',
273 'media/base/rtputils_unittest.cc',
274 'media/base/testutils.cc',
275 'media/base/testutils.h',
276 'media/base/videocapturer_unittest.cc',
277 'media/base/videocommon_unittest.cc',
278 'media/base/videoengine_unittest.h',
279 'media/devices/dummydevicemanager_unittest.cc',
280 'media/devices/filevideocapturer_unittest.cc',
281 'media/webrtc/webrtcpassthroughrender_unittest.cc',
282 'media/webrtc/webrtcvideocapturer_unittest.cc',
283 # Omitted because depends on non-open-source testdata files.
284 # 'media/base/videoframe_unittest.h',
285 # 'media/webrtc/webrtcvideoframe_unittest.cc',
286
287 # Disabled because some tests fail.
288 # TODO(ronghuawu): Reenable these tests.
289 # 'media/devices/devicemanager_unittest.cc',
290 # 'media/webrtc/webrtcvideoengine_unittest.cc',
291 # 'media/webrtc/webrtcvoiceengine_unittest.cc',
292 ],
293 'conditions': [
294 ['OS=="win"', {
295 'msvs_settings': {
296 'VCLinkerTool': {
297 'AdditionalDependencies': [
298 # TODO(ronghuawu): Since we've included strmiids in
299 # libjingle_media target, we shouldn't need this here.
300 # Find out why it doesn't work without this.
301 'strmiids.lib',
302 ],
303 },
304 },
305 }],
306 ],
307 }, # target libjingle_media_unittest
308 {
309 'target_name': 'libjingle_p2p_unittest',
310 'type': 'executable',
311 'dependencies': [
312 '<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp',
313 'gunit',
314 'libjingle.gyp:libjingle',
315 'libjingle.gyp:libjingle_p2p',
316 'libjingle_unittest_main',
317 ],
318 'include_dirs': [
319 '<(DEPTH)/third_party/libsrtp/srtp',
320 ],
321 'sources': [
322 'p2p/base/dtlstransportchannel_unittest.cc',
323 'p2p/base/fakesession.h',
324 'p2p/base/p2ptransportchannel_unittest.cc',
325 'p2p/base/port_unittest.cc',
326 'p2p/base/portallocatorsessionproxy_unittest.cc',
327 'p2p/base/pseudotcp_unittest.cc',
328 'p2p/base/relayport_unittest.cc',
329 'p2p/base/relayserver_unittest.cc',
330 'p2p/base/session_unittest.cc',
331 'p2p/base/stun_unittest.cc',
332 'p2p/base/stunport_unittest.cc',
333 'p2p/base/stunrequest_unittest.cc',
334 'p2p/base/stunserver_unittest.cc',
335 'p2p/base/testrelayserver.h',
336 'p2p/base/teststunserver.h',
337 'p2p/base/testturnserver.h',
338 'p2p/base/transport_unittest.cc',
339 'p2p/base/transportdescriptionfactory_unittest.cc',
340 'p2p/client/connectivitychecker_unittest.cc',
341 'p2p/client/fakeportallocator.h',
342 'p2p/client/portallocator_unittest.cc',
343 'session/media/channel_unittest.cc',
344 'session/media/channelmanager_unittest.cc',
345 'session/media/currentspeakermonitor_unittest.cc',
346 'session/media/mediarecorder_unittest.cc',
347 'session/media/mediamessages_unittest.cc',
348 'session/media/mediasession_unittest.cc',
349 'session/media/mediasessionclient_unittest.cc',
350 'session/media/rtcpmuxfilter_unittest.cc',
351 'session/media/srtpfilter_unittest.cc',
352 'session/media/ssrcmuxfilter_unittest.cc',
353 ],
354 'conditions': [
355 ['OS=="win"', {
356 'msvs_settings': {
357 'VCLinkerTool': {
358 'AdditionalDependencies': [
359 'strmiids.lib',
360 ],
361 },
362 },
363 }],
364 ],
365 }, # target libjingle_p2p_unittest
366 {
367 'target_name': 'libjingle_peerconnection_unittest',
368 'type': 'executable',
369 'dependencies': [
370 'gunit',
371 'libjingle.gyp:libjingle',
372 'libjingle.gyp:libjingle_p2p',
373 'libjingle.gyp:libjingle_peerconnection',
374 'libjingle_unittest_main',
375 ],
376 # TODO(ronghuawu): Reenable below unit tests that require gmock.
377 'sources': [
wu@webrtc.orgd64719d2013-08-01 00:00:07 +0000378 'app/webrtc/datachannel_unittest.cc',
henrike@webrtc.org28e20752013-07-10 00:45:36 +0000379 'app/webrtc/dtmfsender_unittest.cc',
380 'app/webrtc/jsepsessiondescription_unittest.cc',
381 'app/webrtc/localaudiosource_unittest.cc',
382 'app/webrtc/localvideosource_unittest.cc',
383 # 'app/webrtc/mediastream_unittest.cc',
384 # 'app/webrtc/mediastreamhandler_unittest.cc',
385 'app/webrtc/mediastreamsignaling_unittest.cc',
386 'app/webrtc/peerconnection_unittest.cc',
387 'app/webrtc/peerconnectionfactory_unittest.cc',
388 'app/webrtc/peerconnectioninterface_unittest.cc',
389 # 'app/webrtc/peerconnectionproxy_unittest.cc',
390 'app/webrtc/test/fakeaudiocapturemodule.cc',
391 'app/webrtc/test/fakeaudiocapturemodule.h',
392 'app/webrtc/test/fakeaudiocapturemodule_unittest.cc',
393 'app/webrtc/test/fakeconstraints.h',
394 'app/webrtc/test/fakeperiodicvideocapturer.h',
395 'app/webrtc/test/fakevideotrackrenderer.h',
396 'app/webrtc/test/mockpeerconnectionobservers.h',
397 'app/webrtc/test/testsdpstrings.h',
398 'app/webrtc/videotrack_unittest.cc',
399 'app/webrtc/webrtcsdp_unittest.cc',
400 'app/webrtc/webrtcsession_unittest.cc',
401 ],
402 }, # target libjingle_peerconnection_unittest
403 ],
404 'conditions': [
fischman@webrtc.orgcaa70242013-07-31 21:56:30 +0000405 ['OS=="linux" or OS=="android"', {
henrike@webrtc.org28e20752013-07-10 00:45:36 +0000406 'targets': [
407 {
408 'target_name': 'libjingle_peerconnection_test_jar',
409 'type': 'none',
410 'actions': [
411 {
412 'variables': {
413 'java_src_dir': 'app/webrtc/javatests/src',
414 'java_files': [
415 'app/webrtc/javatests/src/org/webrtc/PeerConnectionTest.java',
416 ],
417 },
418 'action_name': 'create_jar',
419 'inputs': [
420 'build/build_jar.sh',
421 '<@(java_files)',
422 '<(PRODUCT_DIR)/libjingle_peerconnection.jar',
423 '<(DEPTH)/third_party/junit/junit-4.11.jar',
424 ],
425 'outputs': [
426 '<(PRODUCT_DIR)/libjingle_peerconnection_test.jar',
427 ],
428 'action': [
fischman@webrtc.org85f07f52013-07-30 18:11:07 +0000429 'build/build_jar.sh', '<(java_home)', '<@(_outputs)',
henrike@webrtc.org28e20752013-07-10 00:45:36 +0000430 '<(INTERMEDIATE_DIR)',
431 '<(java_src_dir):<(PRODUCT_DIR)/libjingle_peerconnection.jar:<(DEPTH)/third_party/junit/junit-4.11.jar',
432 '<@(java_files)'
433 ],
434 },
435 ],
436 },
437 {
438 'target_name': 'libjingle_peerconnection_java_unittest',
439 'type': 'none',
440 'actions': [
441 {
442 'action_name': 'copy libjingle_peerconnection_java_unittest',
443 'inputs': [
444 'app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh',
445 '<(PRODUCT_DIR)/libjingle_peerconnection_test_jar',
446 '<(DEPTH)/third_party/junit/junit-4.11.jar',
447 ],
448 'outputs': [
449 '<(PRODUCT_DIR)/libjingle_peerconnection_java_unittest',
450 ],
451 'action': [
452 'bash', '-c',
453 'rm -f <(PRODUCT_DIR)/libjingle_peerconnection_java_unittest && '
454 'sed -e "s@GYP_JAVA_HOME@<(java_home)@" '
455 '< app/webrtc/javatests/libjingle_peerconnection_java_unittest.sh '
456 '> <(PRODUCT_DIR)/libjingle_peerconnection_java_unittest && '
457 'cp <(DEPTH)/third_party/junit/junit-4.11.jar <(PRODUCT_DIR) && '
458 'chmod u+x <(PRODUCT_DIR)/libjingle_peerconnection_java_unittest'
459 ],
460 },
461 ],
462 },
463 ],
464 }],
465 ['libjingle_objc == 1', {
466 'targets': [
467 {
468 'variables': {
469 'infoplist_file': './app/webrtc/objctests/Info.plist',
470 },
471 'target_name': 'libjingle_peerconnection_objc_test',
472 'type': 'executable',
473 'mac_bundle': 1,
474 'mac_bundle_resources': [
475 '<(infoplist_file)',
476 ],
477 # The plist is listed above so that it appears in XCode's file list,
478 # but we don't actually want to bundle it.
479 'mac_bundle_resources!': [
480 '<(infoplist_file)',
481 ],
482 'xcode_settings': {
483 'INFOPLIST_FILE': '<(infoplist_file)',
484 },
485 'dependencies': [
486 'gunit',
487 'libjingle.gyp:libjingle_peerconnection_objc',
488 ],
489 'FRAMEWORK_SEARCH_PATHS': [
490 '$(inherited)',
491 '$(SDKROOT)/Developer/Library/Frameworks',
492 '$(DEVELOPER_LIBRARY_DIR)/Frameworks',
493 ],
494 'sources': [
495 'app/webrtc/objctests/RTCPeerConnectionSyncObserver.h',
496 'app/webrtc/objctests/RTCPeerConnectionSyncObserver.m',
497 'app/webrtc/objctests/RTCPeerConnectionTest.mm',
498 'app/webrtc/objctests/RTCSessionDescriptionSyncObserver.h',
499 'app/webrtc/objctests/RTCSessionDescriptionSyncObserver.m',
500 ],
501 'include_dirs': [
502 '<(DEPTH)/talk/app/webrtc/objc/public',
503 ],
504 'conditions': [
505 [ 'OS=="mac"', {
506 'sources': [
507 'app/webrtc/objctests/mac/main.mm',
508 ],
509 'xcode_settings': {
510 'CLANG_ENABLE_OBJC_ARC': 'YES',
511 'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO',
512 'CLANG_LINK_OBJC_RUNTIME': 'YES',
513 # build/common.gypi disables ARC by default for back-compat
514 # reasons with OSX 10.6. Enabling OBJC runtime and clearing
515 # LDPLUSPLUS and CC re-enables it. Setting deployment target to
516 # 10.7 as there are no back-compat issues with ARC.
517 # https://code.google.com/p/chromium/issues/detail?id=156530
518 'CC': '',
519 'LDPLUSPLUS': '',
520 'macosx_deployment_target': '10.7',
521 },
522 }],
523 ],
524 },
525 ],
526 }],
527 ],
528}