blob: 6bb46c23806f172e7e0ab06ec95f3efa52fd963b [file] [log] [blame]
# Copyright (c) 2011 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This file is based upon the libvpx.gyp file in the Chromium source code,
# but with the following targets removed: simple_encoder, simple_decoder,
# libvpx_include, libvpx_lib.
# http://src.chromium.org/svn/trunk/deps/third_party/libvpx/libvpx.gyp
{
'variables': {
'conditions': [
['os_posix==1', {
'asm_obj_extension': 'o',
}],
['OS=="win"', {
'asm_obj_extension': 'obj',
}],
],
},
'conditions': [
[ '(OS=="linux" or OS=="mac" or OS=="win") and 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',
'variables': {
'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
'yasm_flags': [
'-I', 'source/config/<(OS)/<(target_arch)',
'-I', 'source/libvpx',
],
},
'includes': [
'../yasm/yasm_compile.gypi'
],
'include_dirs': [
'source/config/<(OS)/<(target_arch)',
'source/libvpx',
'source/libvpx/vp8/common',
'source/libvpx/vp8/decoder',
'source/libvpx/vp8/encoder',
],
'direct_dependent_settings': {
'include_dirs': [
'source/libvpx',
],
},
'conditions': [
[ 'target_arch=="ia32"', {
'includes': [
'libvpx_srcs_x86.gypi',
],
}],
[ 'target_arch=="x64"', {
'includes': [
'libvpx_srcs_x86_64.gypi',
],
}],
],
},
],
},
],
# 'libvpx' target for Chrome OS 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',
# 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)',
# Location of the intermediate output.
'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
# Conditions to generate arm-neon as an target.
'conditions': [
['target_arch=="arm" and arm_neon==1', {
'target_arch_full': 'arm-neon',
}, {
'target_arch_full': '<(target_arch)',
}],
['OS=="android"', {
'_OS': 'linux',
}, {
'_OS': '<(OS)',
}],
],
},
'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,third_party/libvpx/source/config/<(_OS)/<(target_arch_full)',
],
'include_dirs': [
'source/config/<(_OS)/<(target_arch_full)',
'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',
],
}],
],
},
],
}],
],
}
# Local Variables:
# tab-width:2
# indent-tabs-mode:nil
# End:
# vim: set expandtab tabstop=2 shiftwidth=2: