Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: libvpx.gyp

Issue 11555023: libvpx: Add VP9 decoder. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 { 4 {
5 'variables': { 5 'variables': {
6 'use_system_libvpx%': 0, 6 'use_system_libvpx%': 0,
7 }, 7 },
8 'conditions': [ 8 'conditions': [
9 ['use_system_libvpx==0', { 9 ['use_system_libvpx==0', {
10 'variables': { 10 'variables': {
(...skipping 25 matching lines...) Expand all
36 # See http://crbug.com/140121 36 # See http://crbug.com/140121
37 'win_third_party_warn_as_error': 'false', 37 'win_third_party_warn_as_error': 'false',
38 }, 38 },
39 39
40 'conditions': [ 40 'conditions': [
41 # TODO(jimbankoski): Hack to ensure we pass -msse2 for files containing 41 # TODO(jimbankoski): Hack to ensure we pass -msse2 for files containing
42 # SSE intrinsics. See http://crbug/162675 42 # SSE intrinsics. See http://crbug/162675
43 ['target_arch=="ia32" or target_arch=="x64"', { 43 ['target_arch=="ia32" or target_arch=="x64"', {
44 'targets' : [ 44 'targets' : [
45 { 45 {
46 'target_name': 'libvpx_sse2', 46 'target_name': 'libvpx_intrinsics',
47 'type': 'static_library', 47 'type': 'static_library',
48 'include_dirs': [ 48 'include_dirs': [
49 'source/config/<(OS_CATEGORY)/<(target_arch)', 49 'source/config/<(OS_CATEGORY)/<(target_arch)',
50 'source/libvpx', 50 'source/libvpx',
51 'source/libvpx/vp8/common', 51 'source/libvpx/vp8/common',
52 'source/libvpx/vp8/decoder', 52 'source/libvpx/vp8/decoder',
53 'source/libvpx/vp8/encoder', 53 'source/libvpx/vp8/encoder',
54 ], 54 ],
55 'sources': [ 55 'sources': [
56 'source/libvpx/vp8/encoder/x86/denoising_sse2.c', 56 'source/libvpx/vp8/encoder/x86/denoising_sse2.c',
57 'source/libvpx/vp9/common/x86/vp9_filter_sse2.c',
58 'source/libvpx/vp9/common/x86/vp9_loopfilter_x86.c',
59 'source/libvpx/vp9/common/x86/vp9_sadmxn_x86.c',
60 'source/libvpx/vp9/common/x86/vp9_filter_sse4.c',
57 ], 61 ],
58 'conditions': [ 62 'conditions': [
59 ['os_posix==1 and OS!="mac"', { 63 ['os_posix==1 and OS!="mac"', {
60 'cflags': [ '-msse2', ], 64 'cflags': [ '-msse2', '-msse4', ],
61 }], 65 }],
62 ['OS=="mac"', { 66 ['OS=="mac"', {
63 'xcode_settings': { 67 'xcode_settings': {
64 'OTHER_CFLAGS': [ '-msse2', ], 68 'OTHER_CFLAGS': [ '-msse2', '-msse4', ],
65 }, 69 },
66 }], 70 }],
67 ], 71 ],
68 }, 72 },
69 ], 73 ],
70 }], 74 }],
71 [ 'target_arch != "arm" and target_arch != "mipsel"', { 75 [ 'target_arch != "arm" and target_arch != "mipsel"', {
72 'targets': [ 76 'targets': [
73 { 77 {
74 # This libvpx target contains both encoder and decoder. 78 # This libvpx target contains both encoder and decoder.
75 # Encoder is configured to be realtime only. 79 # Encoder is configured to be realtime only.
76 'target_name': 'libvpx', 80 'target_name': 'libvpx',
77 'type': 'static_library', 81 'type': 'static_library',
78 'variables': { 82 'variables': {
79 'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/third_party/libv px', 83 'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/third_party/libv px',
80 'OS_CATEGORY%': '<(OS_CATEGORY)', 84 'OS_CATEGORY%': '<(OS_CATEGORY)',
81 'yasm_flags': [ 85 'yasm_flags': [
82 '-D', 'CHROMIUM', 86 '-D', 'CHROMIUM',
83 '-I', 'source/config/<(OS_CATEGORY)/<(target_arch)', 87 '-I', 'source/config/<(OS_CATEGORY)/<(target_arch)',
84 '-I', 'source/config', 88 '-I', 'source/config',
85 '-I', 'source/libvpx', 89 '-I', 'source/libvpx',
86 '-I', '<(shared_generated_dir)', # Generated assembly offsets 90 '-I', '<(shared_generated_dir)', # Generated assembly offsets
87 ], 91 ],
88 }, 92 },
89 'dependencies': [ 93 'dependencies': [
90 'gen_asm_offsets', 94 'gen_asm_offsets_vp8',
95 'gen_asm_offsets_vp9',
91 ], 96 ],
92 'includes': [ 97 'includes': [
93 '../yasm/yasm_compile.gypi' 98 '../yasm/yasm_compile.gypi'
94 ], 99 ],
95 'include_dirs': [ 100 'include_dirs': [
96 'source/config/<(OS_CATEGORY)/<(target_arch)', 101 'source/config/<(OS_CATEGORY)/<(target_arch)',
97 'source/config', 102 'source/config',
98 'source/libvpx', 103 'source/libvpx',
99 'source/libvpx/vp8/common', 104 'source/libvpx/vp8/common',
100 'source/libvpx/vp8/decoder', 105 'source/libvpx/vp8/decoder',
101 'source/libvpx/vp8/encoder', 106 'source/libvpx/vp8/encoder',
102 '<(shared_generated_dir)', # Provides vpx_rtcd.h. 107 '<(shared_generated_dir)', # Provides vpx_rtcd.h.
103 ], 108 ],
104 'direct_dependent_settings': { 109 'direct_dependent_settings': {
105 'include_dirs': [ 110 'include_dirs': [
106 'source/libvpx', 111 'source/libvpx',
107 ], 112 ],
108 }, 113 },
109 # VS2010 does not correctly incrementally link obj files generated 114 # VS2010 does not correctly incrementally link obj files generated
110 # from asm files. This flag disables UseLibraryDependencyInputs to 115 # from asm files. This flag disables UseLibraryDependencyInputs to
111 # avoid this problem. 116 # avoid this problem.
112 'msvs_2010_disable_uldi_when_referenced': 1, 117 'msvs_2010_disable_uldi_when_referenced': 1,
113 'conditions': [ 118 'conditions': [
114 [ 'target_arch=="ia32"', { 119 [ 'target_arch=="ia32"', {
115 'includes': [ 120 'includes': [
116 'libvpx_srcs_x86.gypi', 121 'libvpx_srcs_x86.gypi',
117 ], 122 ],
118 'dependencies': [ 'libvpx_sse2', ], 123 'dependencies': [ 'libvpx_intrinsics', ],
119 }], 124 }],
120 [ 'target_arch=="x64"', { 125 [ 'target_arch=="x64"', {
121 'includes': [ 126 'includes': [
122 'libvpx_srcs_x86_64.gypi', 127 'libvpx_srcs_x86_64.gypi',
123 ], 128 ],
124 'dependencies': [ 'libvpx_sse2', ], 129 'dependencies': [ 'libvpx_intrinsics', ],
125 }], 130 }],
126 ['clang == 1', { 131 ['clang == 1', {
127 'xcode_settings': { 132 'xcode_settings': {
128 'WARNING_CFLAGS': [ 133 'WARNING_CFLAGS': [
129 # libvpx heavily relies on implicit enum casting. 134 # libvpx heavily relies on implicit enum casting.
130 '-Wno-conversion', 135 '-Wno-conversion',
131 # libvpx does `if ((a == b))` in some places. 136 # libvpx does `if ((a == b))` in some places.
132 '-Wno-parentheses-equality', 137 '-Wno-parentheses-equality',
133 ], 138 ],
134 }, 139 },
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 ], 195 ],
191 # 'libvpx' target for ARM builds. 196 # 'libvpx' target for ARM builds.
192 [ 'target_arch=="arm" ', { 197 [ 'target_arch=="arm" ', {
193 'targets': [ 198 'targets': [
194 { 199 {
195 # This libvpx target contains both encoder and decoder. 200 # This libvpx target contains both encoder and decoder.
196 # Encoder is configured to be realtime only. 201 # Encoder is configured to be realtime only.
197 'target_name': 'libvpx', 202 'target_name': 'libvpx',
198 'type': 'static_library', 203 'type': 'static_library',
199 'dependencies': [ 204 'dependencies': [
200 'gen_asm_offsets', 205 'gen_asm_offsets_vp8',
206 'gen_asm_offsets_vp9',
201 ], 207 ],
202 208
203 # Copy the script to the output folder so that we can use it with 209 # Copy the script to the output folder so that we can use it with
204 # absolute path. 210 # absolute path.
205 'copies': [{ 211 'copies': [{
206 'destination': '<(shared_generated_dir)', 212 'destination': '<(shared_generated_dir)',
207 'files': [ 213 'files': [
208 '<(ads2gas_script_path)', 214 '<(ads2gas_script_path)',
209 ], 215 ],
210 }], 216 }],
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 'source/libvpx', 315 'source/libvpx',
310 ], 316 ],
311 'conditions': [ 317 'conditions': [
312 ['asan==1', { 318 ['asan==1', {
313 'cflags!': [ '-fsanitize=address' ], 319 'cflags!': [ '-fsanitize=address' ],
314 'xcode_settings': { 'OTHER_CFLAGS!': [ '-fsanitize=address' ] }, 320 'xcode_settings': { 'OTHER_CFLAGS!': [ '-fsanitize=address' ] },
315 'ldflags!': [ '-fsanitize=address' ], 321 'ldflags!': [ '-fsanitize=address' ],
316 }], 322 }],
317 ], 323 ],
318 'sources': [ 324 'sources': [
319 '<(shared_generated_dir)/vpx_rtcd.h',
320 'source/libvpx/vp8/common/asm_com_offsets.c',
321 'source/libvpx/vp8/decoder/asm_dec_offsets.c',
322 'source/libvpx/vp8/encoder/asm_enc_offsets.c', 325 'source/libvpx/vp8/encoder/asm_enc_offsets.c',
323 ], 326 ],
324 }, 327 },
325 { 328 {
329 # A library that contains assembly offsets needed.
330 'target_name': 'libvpx_asm_offsets_vp9',
331 'type': 'static_library',
332 'hard_dependency': 1,
333 'include_dirs': [
334 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
335 'source/config',
336 'source/libvpx',
337 ],
338 'conditions': [
339 ['asan==1', {
340 'cflags!': [ '-faddress-sanitizer', '-fsanitize=address', ],
341 'xcode_settings': {
342 'OTHER_CFLAGS!': [ '-faddress-sanitizer','-fsanitize=address' ],
343 },
344 'ldflags!': [ '-faddress-sanitizer', '-fsanitize=address', ],
345 }],
346 ],
347 'sources': [
348 'source/libvpx/vp9/encoder/vp9_asm_enc_offsets.c',
349 ],
350 },
351 {
326 # A target that takes assembly offsets library and generate the 352 # A target that takes assembly offsets library and generate the
327 # corresponding assembly files. 353 # corresponding assembly files.
328 # This target is a hard dependency because the generated .asm files 354 # This target is a hard dependency because the generated .asm files
329 # are needed all assembly optimized files in libvpx. 355 # are needed all assembly optimized files in libvpx.
330 'target_name': 'gen_asm_offsets', 356 'target_name': 'gen_asm_offsets_vp8',
331 'type': 'none', 357 'type': 'none',
332 'hard_dependency': 1, 358 'hard_dependency': 1,
333 'dependencies': [ 359 'dependencies': [
334 'libvpx_asm_offsets', 360 'libvpx_asm_offsets',
335 'libvpx_obj_int_extract#host', 361 'libvpx_obj_int_extract#host',
336 ], 362 ],
337 'conditions': [ 363 'conditions': [
338 ['OS=="win"', { 364 ['OS=="win"', {
339 'variables': { 365 'variables': {
340 'ninja_obj_dir': '<(PRODUCT_DIR)/obj/third_party/libvpx/source/l ibvpx/vp8', 366 'ninja_obj_dir': '<(PRODUCT_DIR)/obj/third_party/libvpx/source/l ibvpx/vp8',
341 }, 367 },
342 'actions': [ 368 'actions': [
343 { 369 {
344 'action_name': 'copy_enc_offsets_obj', 370 'action_name': 'copy_enc_offsets_obj',
345 'inputs': [ 'copy_obj.sh' ], 371 'inputs': [ 'copy_obj.sh' ],
346 'outputs': [ '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj' ], 372 'outputs': [ '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj' ],
347 'action': [ 373 'action': [
348 '<(DEPTH)/third_party/libvpx/copy_obj.sh', 374 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
349 '-d', '<@(_outputs)', 375 '-d', '<@(_outputs)',
350 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_enc_offsets .obj', 376 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_enc_offsets .obj',
351 '-s', '<(ninja_obj_dir)/encoder/libvpx_asm_offsets.asm_enc_o ffsets.obj', 377 '-s', '<(ninja_obj_dir)/encoder/libvpx_asm_offsets.asm_enc_o ffsets.obj',
352 ], 378 ],
353 'process_output_as_sources': 1, 379 'process_output_as_sources': 1,
354 }, 380 },
355 {
356 'action_name': 'copy_dec_offsets_obj',
357 'inputs': [ 'copy_obj.sh' ],
358 'outputs': [ '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj' ],
359 'action': [
360 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
361 '-d', '<@(_outputs)',
362 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_dec_offsets .obj',
363 '-s', '<(ninja_obj_dir)/decoder/libvpx_asm_offsets.asm_dec_o ffsets.obj',
364 ],
365 'process_output_as_sources': 1,
366 },
367 {
368 'action_name': 'copy_com_offsets_obj',
369 'inputs': [ 'copy_obj.sh' ],
370 'outputs': [ '<(INTERMEDIATE_DIR)/asm_com_offsets.obj' ],
371 'action': [
372 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
373 '-d', '<@(_outputs)',
374 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_com_offsets .obj',
375 '-s', '<(ninja_obj_dir)/common/libvpx_asm_offsets.asm_com_of fsets.obj',
376 ],
377 'process_output_as_sources': 1,
378 },
379 ], 381 ],
380 'sources': [ 382 'sources': [
381 '<(INTERMEDIATE_DIR)/asm_com_offsets.obj',
382 '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj',
383 '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj', 383 '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj',
384 ], 384 ],
385 }, { 385 }, {
386 'actions': [ 386 'actions': [
387 {
388 # Take archived .a file and unpack it unto .o files.
389 'action_name': 'unpack_lib_posix',
390 'inputs': [
391 'unpack_lib_posix.sh',
392 ],
393 'outputs': [
394 '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
395 ],
396 'action': [
397 '<(DEPTH)/third_party/libvpx/unpack_lib_posix.sh',
398 '-d', '<(INTERMEDIATE_DIR)',
399 '-a', '<(LIB_DIR)/libvpx_asm_offsets.a',
400 '-a', '<(LIB_DIR)/third_party/libvpx/libvpx_asm_offsets.a',
401 '-f', 'asm_enc_offsets.o',
402 ],
403 'process_output_as_sources': 1,
404 },
405 ],
406 # Need this otherwise gyp won't run the rule on them.
407 'sources': [
408 '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
409 ],
410 }],
411 ],
Alpha Left Google 2012/12/12 21:52:56 Merge problems? This appears twice.
fgalligan1 2012/12/13 00:07:54 No. I'm new wrt GYP. So can I define this action a
Alpha Left Google 2012/12/13 00:15:22 I'm not sure what you're trying to do here, these
fgalligan1 2012/12/13 00:38:08 Oh I see I was looking at the actual file. Somethi
412 'rules': [
413 {
414 # Rule to extract integer values for each symbol from an object fi le.
415 'rule_name': 'obj_int_extract',
416 'extension': '<(asm_obj_extension)',
417 'inputs': [
418 '<(PRODUCT_DIR)/libvpx_obj_int_extract',
419 'obj_int_extract.sh',
420 ],
421 'outputs': [
422 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).asm',
423 ],
424 'variables': {
425 'conditions': [
426 ['target_arch=="arm"', {
427 'asm_format': 'gas',
428 }, {
429 'asm_format': 'rvds',
430 }],
431 ],
432 },
433 'action': [
434 '<(DEPTH)/third_party/libvpx/obj_int_extract.sh',
435 '-e', '<(PRODUCT_DIR)/libvpx_obj_int_extract',
436 '-f', '<(asm_format)',
437 '-b', '<(RULE_INPUT_PATH)',
438 '-o', '<(shared_generated_dir)/vp8_<(RULE_INPUT_ROOT).asm',
439 ],
440 'message': 'Generate assembly offsets <(RULE_INPUT_PATH).',
441 },
442 ],
443 },
444 {
445 # A target that takes assembly offsets library and generate the
446 # corresponding assembly files.
447 # This target is a hard dependency because the generated .asm files
448 # are needed all assembly optimized files in libvpx.
449 'target_name': 'gen_asm_offsets_vp9',
450 'type': 'none',
451 'hard_dependency': 1,
452 'dependencies': [
453 'libvpx_asm_offsets_vp9',
454 'libvpx_obj_int_extract#host',
455 ],
456 'conditions': [
457 ['OS=="win"', {
458 'variables': {
459 'ninja_obj_dir': '<(PRODUCT_DIR)/obj/third_party/libvpx/source/l ibvpx/vp9',
460 },
461 'actions': [
462 {
463 'action_name': 'copy_enc_offsets_obj',
464 'inputs': [ 'copy_obj.sh' ],
465 'outputs': [ '<(INTERMEDIATE_DIR)/vp9_asm_enc_offsets.obj' ],
466 'action': [
467 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
468 '-d', '<@(_outputs)',
469 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets_vp9/vp9_asm_enc _offsets.obj',
470 '-s', '<(ninja_obj_dir)/encoder/libvpx_asm_offsets_vp9.vp9_a sm_enc_offsets.obj',
471 ],
472 'process_output_as_sources': 1,
473 },
Alpha Left Google 2012/12/12 21:52:56 Can you combine this with gen_asm_offsets?
fgalligan1 2012/12/13 00:07:54 I probably could if I knew gyp more, but there are
Alpha Left Google 2012/12/13 00:15:22 I think you should try to merge them. In fact libv
fgalligan1 2012/12/13 00:38:08 OK, how about I add a TODO.
474 ],
475 'sources': [
476 '<(INTERMEDIATE_DIR)/vp9_asm_enc_offsets.obj',
477 ],
478 }, {
479 'actions': [
387 { 480 {
388 # Take archived .a file and unpack it unto .o files. 481 # Take archived .a file and unpack it unto .o files.
389 'action_name': 'unpack_lib_posix', 482 'action_name': 'unpack_lib_posix',
390 'inputs': [ 483 'inputs': [
391 'unpack_lib_posix.sh', 484 'unpack_lib_posix.sh',
392 ], 485 ],
393 'outputs': [ 486 'outputs': [
394 '<(INTERMEDIATE_DIR)/asm_com_offsets.o', 487 '<(INTERMEDIATE_DIR)/vp9_asm_enc_offsets.o',
395 '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
396 '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
397 ], 488 ],
398 'action': [ 489 'action': [
399 '<(DEPTH)/third_party/libvpx/unpack_lib_posix.sh', 490 '<(DEPTH)/third_party/libvpx/unpack_lib_posix.sh',
400 '-d', '<(INTERMEDIATE_DIR)', 491 '-d', '<(INTERMEDIATE_DIR)',
401 '-a', '<(LIB_DIR)/libvpx_asm_offsets.a', 492 '-a', '<(LIB_DIR)/libvpx_asm_offsets_vp9.a',
402 '-a', '<(LIB_DIR)/third_party/libvpx/libvpx_asm_offsets.a', 493 '-a', '<(LIB_DIR)/third_party/libvpx/libvpx_asm_offsets_vp9. a',
403 '-f', 'asm_com_offsets.o', 494 '-f', 'vp9_asm_enc_offsets.o',
404 '-f', 'asm_dec_offsets.o',
405 '-f', 'asm_enc_offsets.o',
406 ], 495 ],
407 'process_output_as_sources': 1, 496 'process_output_as_sources': 1,
408 }, 497 },
409 ], 498 ],
410 # Need this otherwise gyp won't run the rule on them. 499 # Need this otherwise gyp won't run the rule on them.
411 'sources': [ 500 'sources': [
412 '<(INTERMEDIATE_DIR)/asm_com_offsets.o', 501 '<(INTERMEDIATE_DIR)/vp9_asm_enc_offsets.o',
413 '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
414 '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
415 ], 502 ],
416 }], 503 }],
417 ], 504 ],
418 'rules': [ 505 'rules': [
419 { 506 {
420 # Rule to extract integer values for each symbol from an object fi le. 507 # Rule to extract integer values for each symbol from an object fi le.
421 'rule_name': 'obj_int_extract', 508 'rule_name': 'obj_int_extract',
422 'extension': '<(asm_obj_extension)', 509 'extension': '<(asm_obj_extension)',
423 'inputs': [ 510 'inputs': [
424 '<(PRODUCT_DIR)/libvpx_obj_int_extract', 511 '<(PRODUCT_DIR)/libvpx_obj_int_extract',
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 ], 636 ],
550 }], 637 }],
551 ], 638 ],
552 } 639 }
553 640
554 # Local Variables: 641 # Local Variables:
555 # tab-width:2 642 # tab-width:2
556 # indent-tabs-mode:nil 643 # indent-tabs-mode:nil
557 # End: 644 # End:
558 # vim: set expandtab tabstop=2 shiftwidth=2: 645 # vim: set expandtab tabstop=2 shiftwidth=2:
OLDNEW
« generate_gypi.sh ('K') | « generate_gypi.sh ('k') | libvpx_srcs_arm.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698