| Index: libvpx.gyp
|
| ===================================================================
|
| --- libvpx.gyp (revision 152423)
|
| +++ libvpx.gyp (working copy)
|
| @@ -3,508 +3,538 @@
|
| # found in the LICENSE file.
|
| {
|
| 'variables': {
|
| - 'conditions': [
|
| - ['os_posix==1', {
|
| - 'asm_obj_extension': 'o',
|
| - }],
|
| - ['OS=="win"', {
|
| - 'asm_obj_extension': 'obj',
|
| - }],
|
| + 'use_system_libvpx%': 0,
|
| + },
|
| + 'conditions': [
|
| + ['use_system_libvpx==0', {
|
| + 'variables': {
|
| + 'conditions': [
|
| + ['os_posix==1', {
|
| + 'asm_obj_extension': 'o',
|
| + }],
|
| + ['OS=="win"', {
|
| + 'asm_obj_extension': 'obj',
|
| + }],
|
|
|
| - ['target_arch=="arm" and arm_neon==1', {
|
| - 'target_arch_full': 'arm-neon',
|
| - }, {
|
| - 'target_arch_full': '<(target_arch)',
|
| - }],
|
| + ['target_arch=="arm" and arm_neon==1', {
|
| + 'target_arch_full': 'arm-neon',
|
| + }, {
|
| + 'target_arch_full': '<(target_arch)',
|
| + }],
|
|
|
| - # Conversion to libvpx arch names.
|
| - ['target_arch=="arm" and arm_neon==1', {
|
| - 'libvpx_arch': 'armv7',
|
| - }],
|
| - ['target_arch=="arm" and arm_neon==0', {
|
| - 'libvpx_arch': 'armv6',
|
| - }],
|
| - ['target_arch=="ia32"', {
|
| - 'libvpx_arch': 'x86',
|
| - }],
|
| - ['target_arch=="x64"', {
|
| - 'libvpx_arch': 'x86_64',
|
| - }],
|
| + # Conversion to libvpx arch names.
|
| + ['target_arch=="arm" and arm_neon==1', {
|
| + 'libvpx_arch': 'armv7',
|
| + }],
|
| + ['target_arch=="arm" and arm_neon==0', {
|
| + 'libvpx_arch': 'armv6',
|
| + }],
|
| + ['target_arch=="ia32"', {
|
| + 'libvpx_arch': 'x86',
|
| + }],
|
| + ['target_arch=="x64"', {
|
| + 'libvpx_arch': 'x86_64',
|
| + }],
|
|
|
| - ['os_posix == 1 and OS != "mac"', {
|
| - 'OS_CATEGORY%': 'linux',
|
| - }, {
|
| - 'OS_CATEGORY%': '<(OS)',
|
| - }],
|
| - ],
|
| + ['os_posix == 1 and OS != "mac"', {
|
| + 'OS_CATEGORY%': 'linux',
|
| + }, {
|
| + 'OS_CATEGORY%': '<(OS)',
|
| + }],
|
| + ],
|
|
|
| - # Location of the intermediate output.
|
| - 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
|
| + # Location of the intermediate output.
|
| + 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
|
|
|
| - # Override temporarily until we get a warning-free libvpx on Windows.
|
| - # See http://crbug.com/140121
|
| - 'win_third_party_warn_as_error': 'false',
|
| - },
|
| + # Override temporarily until we get a warning-free libvpx on Windows.
|
| + # See http://crbug.com/140121
|
| + 'win_third_party_warn_as_error': 'false',
|
| + },
|
|
|
| - 'conditions': [
|
| - [ 'target_arch != "arm" and target_arch != "mipsel"', {
|
| - 'targets': [
|
| - {
|
| - # This libvpx target contains both encoder and decoder.
|
| - # Encoder is configured to be realtime only.
|
| - 'target_name': 'libvpx',
|
| - 'type': 'static_library',
|
| - 'variables': {
|
| - 'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
|
| - 'OS_CATEGORY%': '<(OS_CATEGORY)',
|
| - 'yasm_flags': [
|
| - '-D', 'CHROMIUM',
|
| - '-I', 'source/config/<(OS_CATEGORY)/<(target_arch)',
|
| - '-I', 'source/config',
|
| - '-I', 'source/libvpx',
|
| - '-I', '<(shared_generated_dir)', # Generated assembly offsets
|
| - ],
|
| - },
|
| - 'dependencies': [
|
| - 'gen_asm_offsets',
|
| - ],
|
| - 'includes': [
|
| - '../yasm/yasm_compile.gypi'
|
| - ],
|
| - 'include_dirs': [
|
| - 'source/config/<(OS_CATEGORY)/<(target_arch)',
|
| - 'source/config',
|
| - 'source/libvpx',
|
| - 'source/libvpx/vp8/common',
|
| - 'source/libvpx/vp8/decoder',
|
| - 'source/libvpx/vp8/encoder',
|
| - '<(shared_generated_dir)', # Provides vpx_rtcd.h.
|
| - ],
|
| - 'direct_dependent_settings': {
|
| - 'include_dirs': [
|
| - 'source/libvpx',
|
| - ],
|
| - },
|
| - # VS2010 does not correctly incrementally link obj files generated
|
| - # from asm files. This flag disables UseLibraryDependencyInputs to
|
| - # avoid this problem.
|
| - 'msvs_2010_disable_uldi_when_referenced': 1,
|
| - 'conditions': [
|
| - [ 'target_arch=="ia32"', {
|
| - 'includes': [
|
| - 'libvpx_srcs_x86.gypi',
|
| + 'conditions': [
|
| + [ 'target_arch != "arm" and target_arch != "mipsel"', {
|
| + 'targets': [
|
| + {
|
| + # This libvpx target contains both encoder and decoder.
|
| + # Encoder is configured to be realtime only.
|
| + 'target_name': 'libvpx',
|
| + 'type': 'static_library',
|
| + 'variables': {
|
| + 'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
|
| + 'OS_CATEGORY%': '<(OS_CATEGORY)',
|
| + 'yasm_flags': [
|
| + '-D', 'CHROMIUM',
|
| + '-I', 'source/config/<(OS_CATEGORY)/<(target_arch)',
|
| + '-I', 'source/config',
|
| + '-I', 'source/libvpx',
|
| + '-I', '<(shared_generated_dir)', # Generated assembly offsets
|
| + ],
|
| + },
|
| + 'dependencies': [
|
| + 'gen_asm_offsets',
|
| ],
|
| - }],
|
| - [ 'target_arch=="x64"', {
|
| 'includes': [
|
| - 'libvpx_srcs_x86_64.gypi',
|
| + '../yasm/yasm_compile.gypi'
|
| ],
|
| - }],
|
| - ['clang == 1', {
|
| - 'xcode_settings': {
|
| - 'WARNING_CFLAGS': [
|
| - # libvpx heavily relies on implicit enum casting.
|
| - '-Wno-conversion',
|
| - # libvpx does `if ((a == b))` in some places.
|
| - '-Wno-parentheses-equality',
|
| + 'include_dirs': [
|
| + 'source/config/<(OS_CATEGORY)/<(target_arch)',
|
| + 'source/config',
|
| + 'source/libvpx',
|
| + 'source/libvpx/vp8/common',
|
| + 'source/libvpx/vp8/decoder',
|
| + 'source/libvpx/vp8/encoder',
|
| + '<(shared_generated_dir)', # Provides vpx_rtcd.h.
|
| + ],
|
| + 'direct_dependent_settings': {
|
| + 'include_dirs': [
|
| + 'source/libvpx',
|
| ],
|
| },
|
| + # VS2010 does not correctly incrementally link obj files generated
|
| + # from asm files. This flag disables UseLibraryDependencyInputs to
|
| + # avoid this problem.
|
| + 'msvs_2010_disable_uldi_when_referenced': 1,
|
| + 'conditions': [
|
| + [ 'target_arch=="ia32"', {
|
| + 'includes': [
|
| + 'libvpx_srcs_x86.gypi',
|
| + ],
|
| + }],
|
| + [ 'target_arch=="x64"', {
|
| + 'includes': [
|
| + 'libvpx_srcs_x86_64.gypi',
|
| + ],
|
| + }],
|
| + ['clang == 1', {
|
| + 'xcode_settings': {
|
| + 'WARNING_CFLAGS': [
|
| + # libvpx heavily relies on implicit enum casting.
|
| + '-Wno-conversion',
|
| + # libvpx does `if ((a == b))` in some places.
|
| + '-Wno-parentheses-equality',
|
| + ],
|
| + },
|
| + 'cflags': [
|
| + '-Wno-conversion',
|
| + '-Wno-parentheses-equality',
|
| + ],
|
| + }],
|
| + [ 'chromeos == 1', {
|
| + # ChromeOS needs these files for animated WebM avatars.
|
| + 'sources': [
|
| + 'source/libvpx/libmkv/EbmlIDs.h',
|
| + 'source/libvpx/libmkv/EbmlWriter.c',
|
| + 'source/libvpx/libmkv/EbmlWriter.h',
|
| + ],
|
| + }],
|
| + ],
|
| + },
|
| + ],
|
| + },
|
| + ],
|
| + # 'libvpx' target for mips builds.
|
| + [ 'target_arch=="mipsel" ', {
|
| + 'targets': [
|
| + {
|
| + # This libvpx target contains both encoder and decoder.
|
| + # Encoder is configured to be realtime only.
|
| + 'target_name': 'libvpx',
|
| + 'type': 'static_library',
|
| + 'variables': {
|
| + 'shared_generated_dir':
|
| + '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
|
| + },
|
| + 'includes': [
|
| + 'libvpx_srcs_mips.gypi',
|
| + ],
|
| 'cflags': [
|
| - '-Wno-conversion',
|
| - '-Wno-parentheses-equality',
|
| + '-EL -static -mips32',
|
| ],
|
| - }],
|
| - [ 'chromeos == 1', {
|
| - # ChromeOS needs these files for animated WebM avatars.
|
| + 'include_dirs': [
|
| + 'source/config/<(OS)/<(target_arch)',
|
| + 'source/config',
|
| + 'source/libvpx',
|
| + 'source/libvpx/vp8/common',
|
| + 'source/libvpx/vp8/decoder',
|
| + 'source/libvpx/vp8/encoder',
|
| + ],
|
| + 'direct_dependent_settings': {
|
| + 'include_dirs': [
|
| + 'source/libvpx',
|
| + ],
|
| + },
|
| 'sources': [
|
| - 'source/libvpx/libmkv/EbmlIDs.h',
|
| - 'source/libvpx/libmkv/EbmlWriter.c',
|
| - 'source/libvpx/libmkv/EbmlWriter.h',
|
| + 'source/config/<(OS)/<(target_arch)/vpx_config.c',
|
| ],
|
| - }],
|
| + },
|
| ],
|
| },
|
| + ],
|
| + # 'libvpx' target for ARM builds.
|
| + [ 'target_arch=="arm" ', {
|
| + 'targets': [
|
| + {
|
| + # This libvpx target contains both encoder and decoder.
|
| + # Encoder is configured to be realtime only.
|
| + 'target_name': 'libvpx',
|
| + 'type': 'static_library',
|
| + 'dependencies': [
|
| + 'gen_asm_offsets',
|
| + ],
|
| +
|
| + # Copy the script to the output folder so that we can use it with
|
| + # absolute path.
|
| + 'copies': [{
|
| + 'destination': '<(shared_generated_dir)',
|
| + 'files': [
|
| + '<(ads2gas_script_path)',
|
| + ],
|
| + }],
|
| +
|
| + # Rule to convert .asm files to .S files.
|
| + 'rules': [
|
| + {
|
| + 'rule_name': 'convert_asm',
|
| + 'extension': 'asm',
|
| + 'inputs': [ '<(shared_generated_dir)/<(ads2gas_script)', ],
|
| + 'outputs': [
|
| + '<(shared_generated_dir)/<(RULE_INPUT_ROOT).S',
|
| + ],
|
| + 'action': [
|
| + 'bash',
|
| + '-c',
|
| + 'cat <(RULE_INPUT_PATH) | perl <(shared_generated_dir)/<(ads2gas_script) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).S',
|
| + ],
|
| + 'process_outputs_as_sources': 1,
|
| + 'message': 'Convert libvpx asm file for ARM <(RULE_INPUT_PATH).',
|
| + },
|
| + ],
|
| +
|
| + 'variables': {
|
| + # Location of the assembly conversion script.
|
| + 'ads2gas_script': 'ads2gas.pl',
|
| + 'ads2gas_script_path': 'source/libvpx/build/make/<(ads2gas_script)',
|
| + },
|
| + 'cflags': [
|
| + # We need to explicitly tell the GCC assembler to look for
|
| + # .include directive files from the place where they're
|
| + # generated to.
|
| + '-Wa,-I,<!(pwd)/source/config/<(OS_CATEGORY)/<(target_arch_full)',
|
| + '-Wa,-I,<!(pwd)/source/config',
|
| + '-Wa,-I,<(shared_generated_dir)',
|
| + ],
|
| + 'include_dirs': [
|
| + 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
|
| + 'source/config',
|
| + 'source/libvpx',
|
| + ],
|
| + 'direct_dependent_settings': {
|
| + 'include_dirs': [
|
| + 'source/libvpx',
|
| + ],
|
| + },
|
| + 'conditions': [
|
| + # Libvpx optimizations for ARMv6 or ARMv7 without NEON.
|
| + ['arm_neon==0', {
|
| + 'includes': [
|
| + 'libvpx_srcs_arm.gypi',
|
| + ],
|
| + }],
|
| + # Libvpx optimizations for ARMv7 with NEON.
|
| + ['arm_neon==1', {
|
| + 'includes': [
|
| + 'libvpx_srcs_arm_neon.gypi',
|
| + ],
|
| + }],
|
| + ['OS == "android"', {
|
| + 'include_dirs': [
|
| + '<(android_ndk_include)',
|
| + '<(android_ndk_include)/machine',
|
| + ],
|
| + 'defines': [
|
| + 'ANDROID_CPU_ARM_FEATURE_NEON=4',
|
| + ],
|
| + }],
|
| + [ 'chromeos == 1', {
|
| + # ChromeOS needs these files for animated WebM avatars.
|
| + 'sources': [
|
| + 'source/libvpx/libmkv/EbmlIDs.h',
|
| + 'source/libvpx/libmkv/EbmlWriter.c',
|
| + 'source/libvpx/libmkv/EbmlWriter.h',
|
| + ],
|
| + }],
|
| + ],
|
| + },
|
| + ],
|
| + }],
|
| ],
|
| - },
|
| - ],
|
| - # 'libvpx' target for mips builds.
|
| - [ 'target_arch=="mipsel" ', {
|
| 'targets': [
|
| {
|
| - # This libvpx target contains both encoder and decoder.
|
| - # Encoder is configured to be realtime only.
|
| - 'target_name': 'libvpx',
|
| - 'type': 'static_library',
|
| - 'variables': {
|
| - 'shared_generated_dir':
|
| - '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
|
| - },
|
| - 'includes': [
|
| - 'libvpx_srcs_mips.gypi',
|
| - ],
|
| - 'cflags': [
|
| - '-EL -static -mips32',
|
| - ],
|
| + # A tool that runs on host to tract integers from object file.
|
| + 'target_name': 'libvpx_obj_int_extract',
|
| + 'type': 'executable',
|
| + 'toolsets': ['host'],
|
| 'include_dirs': [
|
| - 'source/config/<(OS)/<(target_arch)',
|
| + 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
|
| 'source/config',
|
| 'source/libvpx',
|
| - 'source/libvpx/vp8/common',
|
| - 'source/libvpx/vp8/decoder',
|
| - 'source/libvpx/vp8/encoder',
|
| ],
|
| - 'direct_dependent_settings': {
|
| - 'include_dirs': [
|
| - 'source/libvpx',
|
| - ],
|
| - },
|
| 'sources': [
|
| - 'source/config/<(OS)/<(target_arch)/vpx_config.c',
|
| - ],
|
| + 'source/libvpx/build/make/obj_int_extract.c',
|
| + ]
|
| },
|
| - ],
|
| - },
|
| - ],
|
| - # 'libvpx' target for ARM builds.
|
| - [ 'target_arch=="arm" ', {
|
| - 'targets': [
|
| {
|
| - # This libvpx target contains both encoder and decoder.
|
| - # Encoder is configured to be realtime only.
|
| - 'target_name': 'libvpx',
|
| + # A library that contains assembly offsets needed.
|
| + 'target_name': 'libvpx_asm_offsets',
|
| 'type': 'static_library',
|
| - 'dependencies': [
|
| - 'gen_asm_offsets',
|
| - ],
|
| -
|
| - # Copy the script to the output folder so that we can use it with
|
| - # absolute path.
|
| - 'copies': [{
|
| - 'destination': '<(shared_generated_dir)',
|
| - 'files': [
|
| - '<(ads2gas_script_path)',
|
| - ],
|
| - }],
|
| -
|
| - # Rule to convert .asm files to .S files.
|
| - 'rules': [
|
| - {
|
| - 'rule_name': 'convert_asm',
|
| - 'extension': 'asm',
|
| - 'inputs': [ '<(shared_generated_dir)/<(ads2gas_script)', ],
|
| - 'outputs': [
|
| - '<(shared_generated_dir)/<(RULE_INPUT_ROOT).S',
|
| - ],
|
| - 'action': [
|
| - 'bash',
|
| - '-c',
|
| - 'cat <(RULE_INPUT_PATH) | perl <(shared_generated_dir)/<(ads2gas_script) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).S',
|
| - ],
|
| - 'process_outputs_as_sources': 1,
|
| - 'message': 'Convert libvpx asm file for ARM <(RULE_INPUT_PATH).',
|
| - },
|
| - ],
|
| -
|
| - 'variables': {
|
| - # Location of the assembly conversion script.
|
| - 'ads2gas_script': 'ads2gas.pl',
|
| - 'ads2gas_script_path': 'source/libvpx/build/make/<(ads2gas_script)',
|
| - },
|
| - 'cflags': [
|
| - # We need to explicitly tell the GCC assembler to look for
|
| - # .include directive files from the place where they're
|
| - # generated to.
|
| - '-Wa,-I,<!(pwd)/source/config/<(OS_CATEGORY)/<(target_arch_full)',
|
| - '-Wa,-I,<!(pwd)/source/config',
|
| - '-Wa,-I,<(shared_generated_dir)',
|
| - ],
|
| + 'hard_dependency': 1,
|
| 'include_dirs': [
|
| 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
|
| 'source/config',
|
| 'source/libvpx',
|
| ],
|
| - 'direct_dependent_settings': {
|
| - 'include_dirs': [
|
| - 'source/libvpx',
|
| - ],
|
| - },
|
| 'conditions': [
|
| - # Libvpx optimizations for ARMv6 or ARMv7 without NEON.
|
| - ['arm_neon==0', {
|
| - 'includes': [
|
| - 'libvpx_srcs_arm.gypi',
|
| - ],
|
| + ['asan==1', {
|
| + 'cflags!': [ '-faddress-sanitizer', ],
|
| + 'xcode_settings': {
|
| + 'OTHER_CFLAGS!': [ '-faddress-sanitizer', ],
|
| + },
|
| + 'ldflags!': [ '-faddress-sanitizer', ],
|
| }],
|
| - # Libvpx optimizations for ARMv7 with NEON.
|
| - ['arm_neon==1', {
|
| - 'includes': [
|
| - 'libvpx_srcs_arm_neon.gypi',
|
| + ],
|
| + 'sources': [
|
| + '<(shared_generated_dir)/vpx_rtcd.h',
|
| + 'source/libvpx/vp8/common/asm_com_offsets.c',
|
| + 'source/libvpx/vp8/decoder/asm_dec_offsets.c',
|
| + 'source/libvpx/vp8/encoder/asm_enc_offsets.c',
|
| + ],
|
| + },
|
| + {
|
| + # A target that takes assembly offsets library and generate the
|
| + # corresponding assembly files.
|
| + # This target is a hard dependency because the generated .asm files
|
| + # are needed all assembly optimized files in libvpx.
|
| + 'target_name': 'gen_asm_offsets',
|
| + 'type': 'none',
|
| + 'hard_dependency': 1,
|
| + 'dependencies': [
|
| + 'libvpx_asm_offsets',
|
| + 'libvpx_obj_int_extract#host',
|
| + ],
|
| + 'conditions': [
|
| + ['OS=="win"', {
|
| + 'variables': {
|
| + 'ninja_obj_dir': '<(PRODUCT_DIR)/obj/third_party/libvpx/source/libvpx/vp8',
|
| + },
|
| + 'actions': [
|
| + {
|
| + 'action_name': 'copy_enc_offsets_obj',
|
| + 'inputs': [ 'copy_obj.sh' ],
|
| + 'outputs': [ '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj' ],
|
| + 'action': [
|
| + '<(DEPTH)/third_party/libvpx/copy_obj.sh',
|
| + '-d', '<@(_outputs)',
|
| + '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_enc_offsets.obj',
|
| + '-s', '<(ninja_obj_dir)/encoder/libvpx_asm_offsets.asm_enc_offsets.obj',
|
| + ],
|
| + 'process_output_as_sources': 1,
|
| + },
|
| + {
|
| + 'action_name': 'copy_dec_offsets_obj',
|
| + 'inputs': [ 'copy_obj.sh' ],
|
| + 'outputs': [ '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj' ],
|
| + 'action': [
|
| + '<(DEPTH)/third_party/libvpx/copy_obj.sh',
|
| + '-d', '<@(_outputs)',
|
| + '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_dec_offsets.obj',
|
| + '-s', '<(ninja_obj_dir)/decoder/libvpx_asm_offsets.asm_dec_offsets.obj',
|
| + ],
|
| + 'process_output_as_sources': 1,
|
| + },
|
| + {
|
| + 'action_name': 'copy_com_offsets_obj',
|
| + 'inputs': [ 'copy_obj.sh' ],
|
| + 'outputs': [ '<(INTERMEDIATE_DIR)/asm_com_offsets.obj' ],
|
| + 'action': [
|
| + '<(DEPTH)/third_party/libvpx/copy_obj.sh',
|
| + '-d', '<@(_outputs)',
|
| + '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_com_offsets.obj',
|
| + '-s', '<(ninja_obj_dir)/common/libvpx_asm_offsets.asm_com_offsets.obj',
|
| + ],
|
| + 'process_output_as_sources': 1,
|
| + },
|
| ],
|
| - }],
|
| - ['OS == "android"', {
|
| - 'include_dirs': [
|
| - '<(android_ndk_include)',
|
| - '<(android_ndk_include)/machine',
|
| + 'sources': [
|
| + '<(INTERMEDIATE_DIR)/asm_com_offsets.obj',
|
| + '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj',
|
| + '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj',
|
| ],
|
| - 'defines': [
|
| - 'ANDROID_CPU_ARM_FEATURE_NEON=4',
|
| + }, {
|
| + 'actions': [
|
| + {
|
| + # Take archived .a file and unpack it unto .o files.
|
| + 'action_name': 'unpack_lib_posix',
|
| + 'inputs': [
|
| + 'unpack_lib_posix.sh',
|
| + ],
|
| + 'outputs': [
|
| + '<(INTERMEDIATE_DIR)/asm_com_offsets.o',
|
| + '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
|
| + '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
|
| + ],
|
| + 'action': [
|
| + '<(DEPTH)/third_party/libvpx/unpack_lib_posix.sh',
|
| + '-d', '<(INTERMEDIATE_DIR)',
|
| + '-a', '<(LIB_DIR)/libvpx_asm_offsets.a',
|
| + '-a', '<(LIB_DIR)/third_party/libvpx/libvpx_asm_offsets.a',
|
| + '-f', 'asm_com_offsets.o',
|
| + '-f', 'asm_dec_offsets.o',
|
| + '-f', 'asm_enc_offsets.o',
|
| + ],
|
| + 'process_output_as_sources': 1,
|
| + },
|
| ],
|
| - }],
|
| - [ 'chromeos == 1', {
|
| - # ChromeOS needs these files for animated WebM avatars.
|
| + # Need this otherwise gyp won't run the rule on them.
|
| 'sources': [
|
| - 'source/libvpx/libmkv/EbmlIDs.h',
|
| - 'source/libvpx/libmkv/EbmlWriter.c',
|
| - 'source/libvpx/libmkv/EbmlWriter.h',
|
| + '<(INTERMEDIATE_DIR)/asm_com_offsets.o',
|
| + '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
|
| + '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
|
| ],
|
| }],
|
| ],
|
| - },
|
| - ],
|
| - }],
|
| - ],
|
| - 'targets': [
|
| - {
|
| - # A tool that runs on host to tract integers from object file.
|
| - 'target_name': 'libvpx_obj_int_extract',
|
| - 'type': 'executable',
|
| - 'toolsets': ['host'],
|
| - 'include_dirs': [
|
| - 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
|
| - 'source/config',
|
| - 'source/libvpx',
|
| - ],
|
| - 'sources': [
|
| - 'source/libvpx/build/make/obj_int_extract.c',
|
| - ]
|
| - },
|
| - {
|
| - # A library that contains assembly offsets needed.
|
| - 'target_name': 'libvpx_asm_offsets',
|
| - 'type': 'static_library',
|
| - 'hard_dependency': 1,
|
| - 'include_dirs': [
|
| - 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
|
| - 'source/config',
|
| - 'source/libvpx',
|
| - ],
|
| - 'conditions': [
|
| - ['asan==1', {
|
| - 'cflags!': [ '-faddress-sanitizer', ],
|
| - 'xcode_settings': {
|
| - 'OTHER_CFLAGS!': [ '-faddress-sanitizer', ],
|
| - },
|
| - 'ldflags!': [ '-faddress-sanitizer', ],
|
| - }],
|
| - ],
|
| - 'sources': [
|
| - '<(shared_generated_dir)/vpx_rtcd.h',
|
| - 'source/libvpx/vp8/common/asm_com_offsets.c',
|
| - 'source/libvpx/vp8/decoder/asm_dec_offsets.c',
|
| - 'source/libvpx/vp8/encoder/asm_enc_offsets.c',
|
| - ],
|
| - },
|
| - {
|
| - # A target that takes assembly offsets library and generate the
|
| - # corresponding assembly files.
|
| - # This target is a hard dependency because the generated .asm files
|
| - # are needed all assembly optimized files in libvpx.
|
| - 'target_name': 'gen_asm_offsets',
|
| - 'type': 'none',
|
| - 'hard_dependency': 1,
|
| - 'dependencies': [
|
| - 'libvpx_asm_offsets',
|
| - 'libvpx_obj_int_extract#host',
|
| - ],
|
| - 'conditions': [
|
| - ['OS=="win"', {
|
| - 'variables': {
|
| - 'ninja_obj_dir': '<(PRODUCT_DIR)/obj/third_party/libvpx/source/libvpx/vp8',
|
| - },
|
| - 'actions': [
|
| + 'rules': [
|
| {
|
| - 'action_name': 'copy_enc_offsets_obj',
|
| - 'inputs': [ 'copy_obj.sh' ],
|
| - 'outputs': [ '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj' ],
|
| + # Rule to extract integer values for each symbol from an object file.
|
| + 'rule_name': 'obj_int_extract',
|
| + 'extension': '<(asm_obj_extension)',
|
| + 'inputs': [
|
| + '<(PRODUCT_DIR)/libvpx_obj_int_extract',
|
| + 'obj_int_extract.sh',
|
| + ],
|
| + 'outputs': [
|
| + '<(shared_generated_dir)/<(RULE_INPUT_ROOT).asm',
|
| + ],
|
| + 'variables': {
|
| + 'conditions': [
|
| + ['target_arch=="arm"', {
|
| + 'asm_format': 'gas',
|
| + }, {
|
| + 'asm_format': 'rvds',
|
| + }],
|
| + ],
|
| + },
|
| 'action': [
|
| - '<(DEPTH)/third_party/libvpx/copy_obj.sh',
|
| - '-d', '<@(_outputs)',
|
| - '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_enc_offsets.obj',
|
| - '-s', '<(ninja_obj_dir)/encoder/libvpx_asm_offsets.asm_enc_offsets.obj',
|
| + '<(DEPTH)/third_party/libvpx/obj_int_extract.sh',
|
| + '-e', '<(PRODUCT_DIR)/libvpx_obj_int_extract',
|
| + '-f', '<(asm_format)',
|
| + '-b', '<(RULE_INPUT_PATH)',
|
| + '-o', '<(shared_generated_dir)/<(RULE_INPUT_ROOT).asm',
|
| ],
|
| - 'process_output_as_sources': 1,
|
| + 'message': 'Generate assembly offsets <(RULE_INPUT_PATH).',
|
| },
|
| + ],
|
| + },
|
| + {
|
| + 'target_name': 'simple_encoder',
|
| + 'type': 'executable',
|
| + 'dependencies': [
|
| + 'libvpx',
|
| + ],
|
| +
|
| + # Copy the script to the output folder so that we can use it with
|
| + # absolute path.
|
| + 'copies': [{
|
| + 'destination': '<(shared_generated_dir)/simple_encoder',
|
| + 'files': [
|
| + 'source/libvpx/examples/gen_example_code.sh',
|
| + ],
|
| + }],
|
| +
|
| + # Rule to convert .txt files to .c files.
|
| + 'rules': [
|
| {
|
| - 'action_name': 'copy_dec_offsets_obj',
|
| - 'inputs': [ 'copy_obj.sh' ],
|
| - 'outputs': [ '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj' ],
|
| - 'action': [
|
| - '<(DEPTH)/third_party/libvpx/copy_obj.sh',
|
| - '-d', '<@(_outputs)',
|
| - '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_dec_offsets.obj',
|
| - '-s', '<(ninja_obj_dir)/decoder/libvpx_asm_offsets.asm_dec_offsets.obj',
|
| + 'rule_name': 'generate_example',
|
| + 'extension': 'txt',
|
| + 'inputs': [ '<(shared_generated_dir)/simple_encoder/gen_example_code.sh', ],
|
| + 'outputs': [
|
| + '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
|
| ],
|
| - 'process_output_as_sources': 1,
|
| - },
|
| - {
|
| - 'action_name': 'copy_com_offsets_obj',
|
| - 'inputs': [ 'copy_obj.sh' ],
|
| - 'outputs': [ '<(INTERMEDIATE_DIR)/asm_com_offsets.obj' ],
|
| 'action': [
|
| - '<(DEPTH)/third_party/libvpx/copy_obj.sh',
|
| - '-d', '<@(_outputs)',
|
| - '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_com_offsets.obj',
|
| - '-s', '<(ninja_obj_dir)/common/libvpx_asm_offsets.asm_com_offsets.obj',
|
| + 'bash',
|
| + '-c',
|
| + '<(shared_generated_dir)/simple_encoder/gen_example_code.sh <(RULE_INPUT_PATH) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
|
| ],
|
| - 'process_output_as_sources': 1,
|
| + 'process_outputs_as_sources': 1,
|
| + 'message': 'Generate libvpx example code <(RULE_INPUT_PATH).',
|
| },
|
| ],
|
| 'sources': [
|
| - '<(INTERMEDIATE_DIR)/asm_com_offsets.obj',
|
| - '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj',
|
| - '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj',
|
| + 'source/libvpx/examples/simple_encoder.txt',
|
| + ]
|
| + },
|
| + {
|
| + 'target_name': 'simple_decoder',
|
| + 'type': 'executable',
|
| + 'dependencies': [
|
| + 'libvpx',
|
| ],
|
| - }, {
|
| - 'actions': [
|
| +
|
| + # Copy the script to the output folder so that we can use it with
|
| + # absolute path.
|
| + 'copies': [{
|
| + 'destination': '<(shared_generated_dir)/simple_decoder',
|
| + 'files': [
|
| + 'source/libvpx/examples/gen_example_code.sh',
|
| + ],
|
| + }],
|
| +
|
| + # Rule to convert .txt files to .c files.
|
| + 'rules': [
|
| {
|
| - # Take archived .a file and unpack it unto .o files.
|
| - 'action_name': 'unpack_lib_posix',
|
| - 'inputs': [
|
| - 'unpack_lib_posix.sh',
|
| - ],
|
| + 'rule_name': 'generate_example',
|
| + 'extension': 'txt',
|
| + 'inputs': [ '<(shared_generated_dir)/simple_decoder/gen_example_code.sh', ],
|
| 'outputs': [
|
| - '<(INTERMEDIATE_DIR)/asm_com_offsets.o',
|
| - '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
|
| - '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
|
| + '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
|
| ],
|
| 'action': [
|
| - '<(DEPTH)/third_party/libvpx/unpack_lib_posix.sh',
|
| - '-d', '<(INTERMEDIATE_DIR)',
|
| - '-a', '<(LIB_DIR)/libvpx_asm_offsets.a',
|
| - '-a', '<(LIB_DIR)/third_party/libvpx/libvpx_asm_offsets.a',
|
| - '-f', 'asm_com_offsets.o',
|
| - '-f', 'asm_dec_offsets.o',
|
| - '-f', 'asm_enc_offsets.o',
|
| + 'bash',
|
| + '-c',
|
| + '<(shared_generated_dir)/simple_decoder/gen_example_code.sh <(RULE_INPUT_PATH) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
|
| ],
|
| - 'process_output_as_sources': 1,
|
| + 'process_outputs_as_sources': 1,
|
| + 'message': 'Generate libvpx example code <(RULE_INPUT_PATH).',
|
| },
|
| ],
|
| - # Need this otherwise gyp won't run the rule on them.
|
| 'sources': [
|
| - '<(INTERMEDIATE_DIR)/asm_com_offsets.o',
|
| - '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
|
| - '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
|
| - ],
|
| - }],
|
| + 'source/libvpx/examples/simple_decoder.txt',
|
| + ]
|
| + },
|
| ],
|
| - 'rules': [
|
| + }, { # use_system_libvpx==1
|
| + 'targets': [
|
| {
|
| - # Rule to extract integer values for each symbol from an object file.
|
| - 'rule_name': 'obj_int_extract',
|
| - 'extension': '<(asm_obj_extension)',
|
| - 'inputs': [
|
| - '<(PRODUCT_DIR)/libvpx_obj_int_extract',
|
| - 'obj_int_extract.sh',
|
| - ],
|
| - 'outputs': [
|
| - '<(shared_generated_dir)/<(RULE_INPUT_ROOT).asm',
|
| - ],
|
| - 'variables': {
|
| - 'conditions': [
|
| - ['target_arch=="arm"', {
|
| - 'asm_format': 'gas',
|
| - }, {
|
| - 'asm_format': 'rvds',
|
| - }],
|
| + 'target_name': 'libvpx',
|
| + 'type': 'none',
|
| + 'direct_dependent_settings': {
|
| + 'cflags': [
|
| + '<!@(pkg-config --cflags vpx)',
|
| ],
|
| + 'defines': [
|
| + 'USE_SYSTEM_LIBVPX',
|
| + ],
|
| },
|
| - 'action': [
|
| - '<(DEPTH)/third_party/libvpx/obj_int_extract.sh',
|
| - '-e', '<(PRODUCT_DIR)/libvpx_obj_int_extract',
|
| - '-f', '<(asm_format)',
|
| - '-b', '<(RULE_INPUT_PATH)',
|
| - '-o', '<(shared_generated_dir)/<(RULE_INPUT_ROOT).asm',
|
| - ],
|
| - 'message': 'Generate assembly offsets <(RULE_INPUT_PATH).',
|
| + 'link_settings': {
|
| + 'ldflags': [
|
| + '<!@(pkg-config --libs-only-L --libs-only-other vpx)',
|
| + ],
|
| + 'libraries': [
|
| + '<!@(pkg-config --libs-only-l vpx)',
|
| + ],
|
| + },
|
| },
|
| ],
|
| - },
|
| - {
|
| - 'target_name': 'simple_encoder',
|
| - 'type': 'executable',
|
| - 'dependencies': [
|
| - 'libvpx',
|
| - ],
|
| -
|
| - # Copy the script to the output folder so that we can use it with
|
| - # absolute path.
|
| - 'copies': [{
|
| - 'destination': '<(shared_generated_dir)/simple_encoder',
|
| - 'files': [
|
| - 'source/libvpx/examples/gen_example_code.sh',
|
| - ],
|
| - }],
|
| -
|
| - # Rule to convert .txt files to .c files.
|
| - 'rules': [
|
| - {
|
| - 'rule_name': 'generate_example',
|
| - 'extension': 'txt',
|
| - 'inputs': [ '<(shared_generated_dir)/simple_encoder/gen_example_code.sh', ],
|
| - 'outputs': [
|
| - '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
|
| - ],
|
| - 'action': [
|
| - 'bash',
|
| - '-c',
|
| - '<(shared_generated_dir)/simple_encoder/gen_example_code.sh <(RULE_INPUT_PATH) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
|
| - ],
|
| - 'process_outputs_as_sources': 1,
|
| - 'message': 'Generate libvpx example code <(RULE_INPUT_PATH).',
|
| - },
|
| - ],
|
| - 'sources': [
|
| - 'source/libvpx/examples/simple_encoder.txt',
|
| - ]
|
| - },
|
| - {
|
| - 'target_name': 'simple_decoder',
|
| - 'type': 'executable',
|
| - 'dependencies': [
|
| - 'libvpx',
|
| - ],
|
| -
|
| - # Copy the script to the output folder so that we can use it with
|
| - # absolute path.
|
| - 'copies': [{
|
| - 'destination': '<(shared_generated_dir)/simple_decoder',
|
| - 'files': [
|
| - 'source/libvpx/examples/gen_example_code.sh',
|
| - ],
|
| - }],
|
| -
|
| - # Rule to convert .txt files to .c files.
|
| - 'rules': [
|
| - {
|
| - 'rule_name': 'generate_example',
|
| - 'extension': 'txt',
|
| - 'inputs': [ '<(shared_generated_dir)/simple_decoder/gen_example_code.sh', ],
|
| - 'outputs': [
|
| - '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
|
| - ],
|
| - 'action': [
|
| - 'bash',
|
| - '-c',
|
| - '<(shared_generated_dir)/simple_decoder/gen_example_code.sh <(RULE_INPUT_PATH) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
|
| - ],
|
| - 'process_outputs_as_sources': 1,
|
| - 'message': 'Generate libvpx example code <(RULE_INPUT_PATH).',
|
| - },
|
| - ],
|
| - 'sources': [
|
| - 'source/libvpx/examples/simple_decoder.txt',
|
| - ]
|
| - },
|
| + }],
|
| ],
|
| }
|
|
|
|
|