Index: third_party/ffmpeg/ffmpeg.gyp |
=================================================================== |
--- third_party/ffmpeg/ffmpeg.gyp (revision 48686) |
+++ third_party/ffmpeg/ffmpeg.gyp (working copy) |
@@ -1,859 +0,0 @@ |
-# Copyright (c) 2010 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. |
- |
-# There's a couple key GYP variables that control how FFmpeg is built: |
-# ffmpeg_branding |
-# Controls whether we build the Chromium or Google Chrome version of |
-# FFmpeg. The Google Chrome version contains additional codecs. |
-# Typical values are Chromium, Chrome, ChromiumOS, and ChromeOS. |
-# use_system_ffmpeg |
-# When set to non-zero will build Chromium against the system FFmpeg |
-# headers via pkg-config. When Chromium is launched it will assume that |
-# FFmpeg is present in the system library path. Default value is 0. |
-# build_ffmpegsumo |
-# When set to zero will build Chromium against the patched ffmpegsumo |
-# headers, but not build ffmpegsumo itself. Users are expected to build |
-# and provide their own version of ffmpegsumo. Default value is 1. |
-# use_system_vpx |
-# When set to non-zero, will build Chromium against the system libvpx. |
-# libvpx doesn't currently supply a pkg-config file, so we assume that |
-# -lvpx is sufficient. |
- |
-{ |
- 'target_defaults': { |
- 'conditions': [ |
- ['OS!="linux" and OS!="freebsd" and OS!="openbsd" and OS!="solaris"', { |
- 'sources/': [['exclude', '/linux/']] |
- }], |
- ['OS!="mac"', {'sources/': [['exclude', '/mac/']]}], |
- ['OS!="win"', {'sources/': [['exclude', '/win/']]}], |
- ], |
- 'variables': { |
- # Since we are not often debugging FFmpeg, and performance is |
- # unacceptable without optimization, freeze the optimizations to -O2. |
- # If someone really wants -O1 , they can change these in their checkout. |
- # If you want -O0, see the Gotchas in README.Chromium for why that |
- # won't work. |
- 'debug_optimize': '2', |
- 'mac_debug_optimization': '2', |
- }, |
- }, |
- 'variables': { |
- # Allow overridding the selection of which FFmpeg binaries to copy via an |
- # environment variable. Affects the ffmpeg_binaries target. |
- |
- 'conditions': [ |
- ['chromeos==1', { |
- 'ffmpeg_branding%': '<(branding)OS', |
- }, { # otherwise, assume Chrome/Chromium. |
- 'ffmpeg_branding%': '<(branding)', |
- }], |
- ['armv7==1 and arm_neon==1', { |
- # Need a separate config for arm+neon vs arm |
- 'ffmpeg_config%': 'arm-neon', |
- }, { |
- 'ffmpeg_config%': '<(target_arch)', |
- }], |
- ['target_arch=="x64" or target_arch=="ia32"', { |
- 'ffmpeg_asm_lib': 1, |
- }], |
- ['target_arch=="arm"', { |
- 'ffmpeg_asm_lib': 0, |
- }], |
- |
- # libvpx location. |
- # TODO(scherkus): libvpx_hack_dir is a hack to make -L work on linux. |
- ['OS=="mac" or OS=="win"', { |
- 'libvpx_incl_dir': '../libvpx/include', |
- 'libvpx_hack_dir': '../libvpx', |
- }, { |
- 'libvpx_incl_dir': '../libvpx/include', |
- 'libvpx_hack_dir': 'third_party/libvpx', |
- }], |
- ], |
- 'ffmpeg_variant%': '<(target_arch)', |
- |
- 'use_system_ffmpeg%': 0, |
- 'use_system_yasm%': 0, |
- 'build_ffmpegsumo%': 1, |
- 'use_system_vpx%': 0, |
- |
- # Locations for generated artifacts. |
- 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/ffmpeg', |
- 'asm_library': 'ffmpegasm', |
- }, |
- 'conditions': [ |
- ['OS!="win" and use_system_ffmpeg==0 and build_ffmpegsumo!=0', { |
- 'targets': [ |
- { |
- 'target_name': 'ffmpegsumo', |
- 'type': 'shared_library', |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/allcodecs.c', |
- 'source/patched-ffmpeg-mt/libavcodec/audioconvert.c', |
- 'source/patched-ffmpeg-mt/libavcodec/avpacket.c', |
- 'source/patched-ffmpeg-mt/libavcodec/bitstream.c', |
- 'source/patched-ffmpeg-mt/libavcodec/bitstream_filter.c', |
- 'source/patched-ffmpeg-mt/libavcodec/dsputil.c', |
- 'source/patched-ffmpeg-mt/libavcodec/eval.c', |
- 'source/patched-ffmpeg-mt/libavcodec/faanidct.c', |
- 'source/patched-ffmpeg-mt/libavcodec/fft.c', |
- 'source/patched-ffmpeg-mt/libavcodec/golomb.c', |
- 'source/patched-ffmpeg-mt/libavcodec/imgconvert.c', |
- 'source/patched-ffmpeg-mt/libavcodec/jrevdct.c', |
- 'source/patched-ffmpeg-mt/libavcodec/libvpxdec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mdct.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpeg12data.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpeg4audio.c', |
- 'source/patched-ffmpeg-mt/libavcodec/opt.c', |
- 'source/patched-ffmpeg-mt/libavcodec/options.c', |
- 'source/patched-ffmpeg-mt/libavcodec/parser.c', |
- 'source/patched-ffmpeg-mt/libavcodec/pthread.c', |
- 'source/patched-ffmpeg-mt/libavcodec/raw.c', |
- 'source/patched-ffmpeg-mt/libavcodec/simple_idct.c', |
- 'source/patched-ffmpeg-mt/libavcodec/utils.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vorbis.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vorbis_data.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vorbis_dec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vp3.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vp3dsp.c', |
- 'source/patched-ffmpeg-mt/libavcodec/xiph.c', |
- 'source/patched-ffmpeg-mt/libavformat/allformats.c', |
- 'source/patched-ffmpeg-mt/libavformat/avi.c', |
- 'source/patched-ffmpeg-mt/libavformat/avio.c', |
- 'source/patched-ffmpeg-mt/libavformat/aviobuf.c', |
- 'source/patched-ffmpeg-mt/libavformat/cutils.c', |
- 'source/patched-ffmpeg-mt/libavformat/id3v1.c', |
- 'source/patched-ffmpeg-mt/libavformat/isom.c', |
- 'source/patched-ffmpeg-mt/libavformat/matroska.c', |
- 'source/patched-ffmpeg-mt/libavformat/matroskadec.c', |
- 'source/patched-ffmpeg-mt/libavformat/metadata.c', |
- 'source/patched-ffmpeg-mt/libavformat/metadata_compat.c', |
- 'source/patched-ffmpeg-mt/libavformat/oggdec.c', |
- 'source/patched-ffmpeg-mt/libavformat/oggparseogm.c', |
- 'source/patched-ffmpeg-mt/libavformat/oggparsetheora.c', |
- 'source/patched-ffmpeg-mt/libavformat/oggparsevorbis.c', |
- 'source/patched-ffmpeg-mt/libavformat/options.c', |
- 'source/patched-ffmpeg-mt/libavformat/riff.c', |
- 'source/patched-ffmpeg-mt/libavformat/rm.c', |
- 'source/patched-ffmpeg-mt/libavformat/rmdec.c', |
- 'source/patched-ffmpeg-mt/libavformat/utils.c', |
- 'source/patched-ffmpeg-mt/libavformat/vorbiscomment.c', |
- 'source/patched-ffmpeg-mt/libavutil/avstring.c', |
- 'source/patched-ffmpeg-mt/libavutil/base64.c', |
- 'source/patched-ffmpeg-mt/libavutil/crc.c', |
- 'source/patched-ffmpeg-mt/libavutil/intfloat_readwrite.c', |
- 'source/patched-ffmpeg-mt/libavutil/log.c', |
- 'source/patched-ffmpeg-mt/libavutil/lzo.c', |
- 'source/patched-ffmpeg-mt/libavutil/mathematics.c', |
- 'source/patched-ffmpeg-mt/libavutil/mem.c', |
- 'source/patched-ffmpeg-mt/libavutil/pixdesc.c', |
- 'source/patched-ffmpeg-mt/libavutil/rational.c', |
- # Config file for the OS and architecture. |
- 'source/config/<(ffmpeg_branding)/<(OS)/<(ffmpeg_config)/config.h', |
- 'source/config/libavutil/avconfig.h', |
- ], |
- 'include_dirs': [ |
- 'source/config/<(ffmpeg_branding)/<(OS)/<(ffmpeg_config)', |
- 'source/patched-ffmpeg-mt', |
- 'source/config', |
- ], |
- 'defines': [ |
- 'HAVE_AV_CONFIG_H', |
- '_POSIX_C_SOURCE=200112', |
- ], |
- 'cflags': [ |
- '-fomit-frame-pointer', |
- ], |
- 'conditions': [ |
- ['ffmpeg_branding=="Chrome" or ffmpeg_branding=="ChromeOS"', { |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/aac.c', |
- 'source/patched-ffmpeg-mt/libavcodec/aac_ac3_parser.c', |
- 'source/patched-ffmpeg-mt/libavcodec/aac_parser.c', |
- 'source/patched-ffmpeg-mt/libavcodec/aacsbr.c', |
- 'source/patched-ffmpeg-mt/libavcodec/aactab.c', |
- 'source/patched-ffmpeg-mt/libavcodec/cabac.c', |
- 'source/patched-ffmpeg-mt/libavcodec/error_resilience.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_cabac.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_cavlc.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_direct.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_loopfilter.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_mp4toannexb_bsf.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_parser.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_ps.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_refs.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_sei.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264dsp.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264idct.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264pred.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpegaudio.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpegaudio_parser.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpegaudiodata.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpegaudiodec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpegaudiodecheader.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpegvideo.c', |
- 'source/patched-ffmpeg-mt/libavcodec/rdft.c', |
- 'source/patched-ffmpeg-mt/libavformat/gxf.c', |
- 'source/patched-ffmpeg-mt/libavformat/id3v2.c', |
- 'source/patched-ffmpeg-mt/libavformat/mov.c', |
- 'source/patched-ffmpeg-mt/libavformat/mp3.c', |
- ], |
- }], # ffmpeg_branding |
- ['ffmpeg_branding=="ChromiumOS" or ffmpeg_branding=="ChromeOS"', { |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/pcm.c', |
- 'source/patched-ffmpeg-mt/libavformat/raw.c', |
- 'source/patched-ffmpeg-mt/libavformat/wav.c', |
- 'source/patched-ffmpeg-mt/libavformat/matroska.c', |
- 'source/patched-ffmpeg-mt/libavformat/matroskadec.c', |
- ], |
- }], # ffmpeg_branding |
- ['ffmpeg_branding=="ChromeOS"', { |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/aandcttab.c', |
- 'source/patched-ffmpeg-mt/libavcodec/error_resilience.c', |
- 'source/patched-ffmpeg-mt/libavcodec/faandct.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h263.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h263_parser.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h263dec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/h264_mp4toannexb_bsf.c', |
- 'source/patched-ffmpeg-mt/libavcodec/intrax8.c', |
- 'source/patched-ffmpeg-mt/libavcodec/intrax8dsp.c', |
- 'source/patched-ffmpeg-mt/libavcodec/ituh263dec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/ituh263enc.c', |
- 'source/patched-ffmpeg-mt/libavcodec/jfdctint.c', |
- 'source/patched-ffmpeg-mt/libavcodec/jfdctfst.c', |
- 'source/patched-ffmpeg-mt/libavcodec/motion_est.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpeg4data.h', |
- 'source/patched-ffmpeg-mt/libavcodec/mpeg4video.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpeg4video.h', |
- 'source/patched-ffmpeg-mt/libavcodec/mpeg4video_parser.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpeg4video_es_bsf.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpeg4videoenc.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpeg4videodec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpegvideo.c', |
- 'source/patched-ffmpeg-mt/libavcodec/mpegvideo_enc.c', |
- 'source/patched-ffmpeg-mt/libavcodec/msmpeg4.c', |
- 'source/patched-ffmpeg-mt/libavcodec/msmpeg4data.c', |
- 'source/patched-ffmpeg-mt/libavcodec/ratecontrol.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vc1.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vc1data.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vc1dec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vc1dsp.c', |
- 'source/patched-ffmpeg-mt/libavcodec/wma.c', |
- 'source/patched-ffmpeg-mt/libavcodec/wmadec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/wmaprodec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/wmv2.c', |
- 'source/patched-ffmpeg-mt/libavcodec/wmv2dec.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vc1_asftoannexg_bsf.c', |
- 'source/patched-ffmpeg-mt/libavcodec/vc1_asftorcv_bsf.c', |
- 'source/patched-ffmpeg-mt/libavformat/asf.c', |
- 'source/patched-ffmpeg-mt/libavformat/asfcrypt.c', |
- 'source/patched-ffmpeg-mt/libavformat/asfdec.c', |
- 'source/patched-ffmpeg-mt/libavformat/avidec.c', |
- 'source/patched-ffmpeg-mt/libavformat/avlanguage.c', |
- 'source/patched-ffmpeg-mt/libavutil/des.c', |
- 'source/patched-ffmpeg-mt/libavutil/rc4.c', |
- ], |
- }], # ffmpeg_branding |
- ['target_arch=="ia32" or target_arch=="x64"', { |
- 'dependencies': [ |
- 'make_ffmpeg_asm_lib', |
- ], |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/x86/cpuid.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/dsputil_mmx.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/fdct_mmx.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/fft.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/fft_3dn.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/fft_3dn2.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/fft_sse.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/idct_mmx_xvid.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/idct_sse2_xvid.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/simple_idct_mmx.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/vp3dsp_mmx.c', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/vp3dsp_sse2.c', |
- ], |
- }], |
- ['(target_arch=="ia32" or target_arch=="x64") and (ffmpeg_branding=="ChromeOS" or ffmpeg_branding=="Chrome")', { |
- 'dependencies': [ |
- 'make_ffmpeg_asm_lib', |
- ], |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/x86/mpegvideo_mmx.c', |
- ], |
- }], |
- ['(target_arch=="ia32" or target_arch=="x64") and ffmpeg_branding=="ChromeOS"', { |
- 'dependencies': [ |
- 'make_ffmpeg_asm_lib', |
- ], |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/x86/vc1dsp_mmx.c', |
- ], |
- }], |
- ['target_arch=="ia32"', { |
- 'cflags!': [ |
- # Turn off valgrind build option that breaks ffmpeg builds. |
- # Allows config.h HAVE_EBP_AVAILABLE 1 and HAVE_EBX_AVAILABLE 1 |
- '-fno-omit-frame-pointer', |
- ], |
- }], # target_arch=="ia32" |
- ['target_arch=="x64"', { |
- # x64 requires PIC for shared libraries. This is opposite |
- # of ia32 where due to a slew of inline assembly using ebx, |
- # FFmpeg CANNOT be built with PIC. |
- 'defines': [ |
- 'PIC', |
- ], |
- 'cflags': [ |
- '-fPIC', |
- ], |
- }], # target_arch=="x64" |
- ['target_arch=="arm"', { |
- 'defines': [ |
- 'PIC', |
- ], |
- 'cflags': [ |
- '-fPIC', |
- ], |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_arm.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_armv6.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_init_arm.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_init_armv5te.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_init_armv6.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_init_vfp.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_vfp.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/fft_init_arm.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/jrevdct_arm.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/simple_idct_arm.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/simple_idct_armv5te.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/simple_idct_armv6.S', |
- ], |
- # TODO(scherkus): Temporary until libvpx compiles on ARM. |
- 'sources!': [ |
- 'source/patched-ffmpeg-mt/libavcodec/libvpxdec.c', |
- ], |
- 'conditions': [ |
- ['arm_neon==1', { |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_init_neon.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_neon.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/fft_neon.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/int_neon.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/rdft_neon.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/simple_idct_neon.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/vp3dsp_neon.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/mdct_neon.S', |
- ], |
- }], |
- ], |
- }], # target_arch=="arm" |
- ['target_arch=="arm" and (ffmpeg_branding=="Chrome" or ffmpeg_branding=="ChromeOS")', { |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/arm/h264dsp_init_arm.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/h264pred_init_arm.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/mpegvideo_arm.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/mpegvideo_armv5te.c', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/mpegvideo_armv5te_s.S', |
- ], |
- 'conditions': [ |
- ['arm_neon==1', { |
- 'sources': [ |
- 'source/patched-ffmpeg-mt/libavcodec/arm/h264dsp_neon.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/h264idct_neon.S', |
- 'source/patched-ffmpeg-mt/libavcodec/arm/h264pred_neon.S', |
- ], |
- }], |
- ], |
- }], |
- ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', { |
- 'defines': [ |
- '_ISOC99_SOURCE', |
- '_LARGEFILE_SOURCE', |
- ], |
- 'cflags': [ |
- '-std=c99', |
- '-pthread', |
- '-fno-math-errno', |
- ], |
- 'cflags!': [ |
- # Ensure the symbols are exported. |
- # |
- # TODO(ajwong): Fix common.gypi to only add this flag for |
- # _type != shared_library. |
- '-fvisibility=hidden', |
- ], |
- 'link_settings': { |
- 'ldflags': [ |
- '-Wl,-Bsymbolic', |
- '-L<(shared_generated_dir)', |
- ], |
- 'libraries': [ |
- '-lz', |
- ], |
- 'conditions': [ |
- ['target_arch!="arm"', { |
- 'libraries': [ |
- # TODO(scherkus): Temporary until libvpx compiles on ARM. |
- '-lvpx', |
- ], |
- }], |
- ['ffmpeg_asm_lib==1', { |
- 'libraries': [ |
- # TODO(ajwong): When scons is dead, collapse this with the |
- # absolute path entry inside the OS="mac" conditional, and |
- # move it out of the conditionals block altogether. |
- '-l<(asm_library)', |
- ], |
- }], |
- ['use_system_vpx==0', { |
- 'ldflags': [ |
- '-L<(libvpx_hack_dir)/lib/<(OS)/<(target_arch)', |
- ], |
- }], |
- ], |
- }, |
- }], # OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" |
- ['OS=="mac"', { |
- 'libraries': [ |
- # TODO(ajwong): Move into link_settings when this is fixed: |
- # |
- # http://code.google.com/p/gyp/issues/detail?id=108 |
- '<(shared_generated_dir)/<(STATIC_LIB_PREFIX)<(asm_library)<(STATIC_LIB_SUFFIX)', |
- '<(libvpx_hack_dir)/lib/<(OS)/<(target_arch)/libvpx.a', |
- ], |
- 'link_settings': { |
- 'libraries': [ |
- '$(SDKROOT)/usr/lib/libz.dylib', |
- ], |
- }, |
- 'xcode_settings': { |
- 'GCC_SYMBOLS_PRIVATE_EXTERN': 'NO', # No -fvisibility=hidden |
- 'GCC_DYNAMIC_NO_PIC': 'YES', # -mdynamic-no-pic |
- # (equiv -fno-PIC) |
- 'DYLIB_INSTALL_NAME_BASE': '@loader_path', |
- 'LIBRARY_SEARCH_PATHS': [ |
- '<(shared_generated_dir)' |
- ], |
- 'OTHER_LDFLAGS': [ |
- # This is needed because FFmpeg cannot be built as PIC, and |
- # thus we need to instruct the linker to allow relocations |
- # for read-only segments for this target to be able to |
- # generated the shared library on Mac. |
- # |
- # This makes Mark sad, but he's okay with it since it is |
- # isolated to this module. When Mark finds this in the |
- # future, and has forgotten this conversation, this comment |
- # should remind him that the world is still nice and |
- # butterflies still exist...as do rainbows, sunshine, |
- # tulips, etc., etc...but not kittens. Those went away |
- # with this flag. |
- '-Wl,-read_only_relocs,suppress', |
- '-L<(libvpx_hack_dir)/lib/mac/ia32' |
- ], |
- }, |
- }], # OS=="mac" |
- ['use_system_vpx==0', { |
- 'include_dirs': [ |
- '<(libvpx_incl_dir)', |
- ], |
- }, { |
- # Using libvpx provided by the system. |
- 'include_dirs': [ |
- '/usr/include/vpx', |
- ], |
- } |
- ], |
- ], |
- 'actions': [ |
- { |
- # Needed to serialize the output of make_ffmpeg_asm_lib with |
- # this target being built. |
- 'action_name': 'ffmpegasm_barrier', |
- 'inputs': [ |
- '<(shared_generated_dir)/<(STATIC_LIB_PREFIX)<(asm_library)<(STATIC_LIB_SUFFIX)', |
- ], |
- 'outputs': [ |
- '<(INTERMEDIATE_DIR)/third_party/ffmpeg/<(asm_library)' |
- ], |
- 'action': [ |
- 'touch', |
- '<(INTERMEDIATE_DIR)/third_party/ffmpeg/<(asm_library)' |
- ], |
- 'process_outputs_as_sources': 0, |
- 'message': 'Serializing build of <(asm_library).', |
- }, |
- ], |
- }, |
- { |
- 'target_name': 'assemble_ffmpeg_asm', |
- 'type': 'none', |
- 'conditions': [ |
- ['use_system_yasm==0', { |
- 'dependencies': [ |
- '../yasm/yasm.gyp:yasm#host', |
- ], |
- 'variables': { |
- 'yasm_path': '<(PRODUCT_DIR)/yasm', |
- }, |
- },{ # use_system_yasm!=0 |
- 'variables': { |
- 'yasm_path': '<!(which yasm)', |
- }, |
- }], |
- ], |
- 'sources': [ |
- # The FFmpeg yasm files. |
- 'source/patched-ffmpeg-mt/libavcodec/x86/dsputil_yasm.asm', |
- 'source/patched-ffmpeg-mt/libavcodec/x86/fft_mmx.asm', |
- ], |
- 'rules': [ |
- { |
- 'conditions': [ |
- ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', { |
- 'variables': { |
- 'obj_format': 'elf', |
- }, |
- 'conditions': [ |
- ['target_arch=="ia32"', { |
- 'variables': { |
- 'yasm_flags': [ |
- '-DARCH_X86_32', |
- '-m', 'x86', |
- ], |
- }, |
- }], |
- ['target_arch=="x64"', { |
- 'variables': { |
- 'yasm_flags': [ |
- '-DARCH_X86_64', |
- '-m', 'amd64', |
- '-DPIC', |
- ], |
- }, |
- }], |
- ['target_arch=="arm"', { |
- 'variables': { |
- 'yasm_flags': [], |
- }, |
- }], |
- ], |
- }], ['OS=="mac"', { |
- 'variables': { |
- 'obj_format': 'macho', |
- 'yasm_flags': [ '-DPREFIX', ], |
- }, |
- 'conditions': [ |
- ['target_arch=="ia32"', { |
- 'variables': { |
- 'yasm_flags': [ |
- '-DARCH_X86_32', |
- '-m', 'x86', |
- ], |
- }, |
- }], |
- ['target_arch=="x64"', { |
- 'variables': { |
- 'yasm_flags': [ |
- '-DARCH_X86_64', |
- '-m', 'amd64', |
- '-DPIC', |
- ], |
- }, |
- }], |
- ], |
- }], |
- ], |
- 'rule_name': 'assemble', |
- 'extension': 'asm', |
- 'inputs': [ '<(yasm_path)', ], |
- 'outputs': [ |
- '<(shared_generated_dir)/<(RULE_INPUT_ROOT).o', |
- ], |
- 'action': [ |
- '<(yasm_path)', |
- '-f', '<(obj_format)', |
- '<@(yasm_flags)', |
- '-I', 'source/patched-ffmpeg-mt/libavcodec/x86/', |
- '-o', '<(shared_generated_dir)/<(RULE_INPUT_ROOT).o', |
- '<(RULE_INPUT_PATH)', |
- ], |
- 'process_outputs_as_sources': 0, |
- 'message': 'Build ffmpeg yasm build <(RULE_INPUT_PATH).', |
- }, |
- ], |
- }, |
- { |
- 'target_name': 'make_ffmpeg_asm_lib', |
- 'type': 'none', |
- 'dependencies': [ |
- 'assemble_ffmpeg_asm', |
- ], |
- 'sources': [ |
- ], |
- 'actions': [ |
- { |
- 'action_name': 'make_library', |
- 'variables': { |
- # Make sure this stays in sync with the corresponding sources |
- # in assemble_ffmpeg_asm. |
- 'asm_objects': [ |
- '<(shared_generated_dir)/dsputil_yasm.o', |
- '<(shared_generated_dir)/fft_mmx.o', |
- ], |
- 'library_path': '<(shared_generated_dir)/<(STATIC_LIB_PREFIX)<(asm_library)<(STATIC_LIB_SUFFIX)', |
- }, |
- 'inputs': [ '<@(asm_objects)', ], |
- 'outputs': [ '<(library_path)', ], |
- 'action': [ 'ar', 'rcs', '<(library_path)', '<@(asm_objects)', ], |
- 'process_outputs_as_sources': 0, |
- 'message': 'Packate ffmpeg assembly into <(library_path).', |
- }, |
- ], |
- }, |
- { |
- # A target shim that allows putting a dependency on ffmpegsumo |
- # without pulling it into the link line. |
- # |
- # We use an "executable" taget without any sources to break the |
- # link line relationship to ffmpegsumo. |
- # |
- # Most people will want to depend on this target instead of on |
- # ffmpegsumo directly since ffmpegsumo is meant to be |
- # used via dlopen() in chrome. |
- 'target_name': 'ffmpegsumo_nolink', |
- 'type': 'executable', |
- 'sources': [ 'dummy_nolink.cc' ], |
- 'dependencies': [ |
- 'ffmpegsumo', |
- ], |
- 'conditions': [ |
- ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', { |
- 'copies': [ |
- { |
- # On Make and Scons builds, the library does not end up in |
- # the PRODUCT_DIR. |
- # |
- # http://code.google.com/p/gyp/issues/detail?id=57 |
- # |
- # TODO(ajwong): Fix gyp, fix the world. |
- 'destination': '<(PRODUCT_DIR)', |
- 'files': ['<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)ffmpegsumo<(SHARED_LIB_SUFFIX)'], |
- }, |
- ], |
- }], |
- ], |
- }, |
- ], |
- }], |
- ], # conditions |
- 'targets': [ |
- { |
- 'variables': { |
- 'generate_stubs_script': '../../tools/generate_stubs/generate_stubs.py', |
- 'sig_files': [ |
- # Note that these must be listed in dependency order. |
- # (i.e. if A depends on B, then B must be listed before A.) |
- 'avutil-50.sigs', |
- 'avcodec-52.sigs', |
- 'avformat-52.sigs', |
- ], |
- 'extra_header': 'ffmpeg_stub_headers.fragment', |
- }, |
- |
- 'target_name': 'ffmpeg', |
- 'msvs_guid': 'D7A94F58-576A-45D9-A45F-EB87C63ABBB0', |
- 'sources': [ |
- # Hacks to introduce C99 types into Visual Studio. |
- 'include/win/inttypes.h', |
- 'include/win/stdint.h', |
- |
- # Files needed for stub generation rules. |
- '<@(sig_files)', |
- '<(extra_header)' |
- ], |
- 'hard_dependency': 1, |
- |
- # Do not fear the massive conditional blocks! They do the following: |
- # 1) Use the Window stub generator on Windows |
- # 2) Else, use the POSIX stub generator on non-Windows |
- # a) Use system includes when use_system_ffmpeg!=0 |
- # b) Else, use our local copy in source/patched-ffmpeg-mt |
- 'conditions': [ |
- ['OS=="win"', { |
- 'variables': { |
- 'outfile_type': 'windows_lib', |
- 'output_dir': '<(PRODUCT_DIR)/lib', |
- 'intermediate_dir': '<(INTERMEDIATE_DIR)', |
- # TODO(scherkus): Change Windows DEPS directory so we don't need |
- # this conditional. |
- 'conditions': [ |
- [ 'ffmpeg_branding=="Chrome"', { |
- 'ffmpeg_bin_dir': 'chrome/<(OS)/<(ffmpeg_variant)', |
- }, { # else ffmpeg_branding!="Chrome", assume chromium. |
- 'ffmpeg_bin_dir': 'chromium/<(OS)/<(ffmpeg_variant)', |
- }], |
- ], |
- }, |
- 'type': 'none', |
- 'sources!': [ |
- '<(extra_header)', |
- ], |
- 'direct_dependent_settings': { |
- 'include_dirs': [ |
- 'include/win', |
- 'source/config', |
- 'source/patched-ffmpeg-mt', |
- ], |
- 'link_settings': { |
- 'libraries': [ |
- '<(output_dir)/avcodec-52.lib', |
- '<(output_dir)/avformat-52.lib', |
- '<(output_dir)/avutil-50.lib', |
- ], |
- 'msvs_settings': { |
- 'VCLinkerTool': { |
- 'DelayLoadDLLs': [ |
- 'avcodec-52.dll', |
- 'avformat-52.dll', |
- 'avutil-50.dll', |
- ], |
- }, |
- }, |
- }, |
- }, |
- 'rules': [ |
- { |
- 'rule_name': 'generate_libs', |
- 'extension': 'sigs', |
- 'inputs': [ |
- '<(generate_stubs_script)', |
- '<@(sig_files)', |
- ], |
- 'outputs': [ |
- '<(output_dir)/<(RULE_INPUT_ROOT).lib', |
- ], |
- 'action': ['python', '<(generate_stubs_script)', |
- '-i', '<(intermediate_dir)', |
- '-o', '<(output_dir)', |
- '-t', '<(outfile_type)', |
- '<@(RULE_INPUT_PATH)', |
- ], |
- 'message': 'Generating FFmpeg import libraries.', |
- }, |
- ], |
- |
- # Copy prebuilt binaries to build directory. |
- 'dependencies': ['../../build/win/system.gyp:cygwin'], |
- 'copies': [{ |
- 'destination': '<(PRODUCT_DIR)/', |
- 'files': [ |
- 'binaries/<(ffmpeg_bin_dir)/avcodec-52.dll', |
- 'binaries/<(ffmpeg_bin_dir)/avformat-52.dll', |
- 'binaries/<(ffmpeg_bin_dir)/avutil-50.dll', |
- ], |
- }], |
- }, { # else OS!="win", use POSIX stub generator |
- 'variables': { |
- 'outfile_type': 'posix_stubs', |
- 'stubs_filename_root': 'ffmpeg_stubs', |
- 'project_path': 'third_party/ffmpeg', |
- 'intermediate_dir': '<(INTERMEDIATE_DIR)', |
- 'output_root': '<(SHARED_INTERMEDIATE_DIR)/ffmpeg', |
- }, |
- 'type': '<(library)', |
- 'include_dirs': [ |
- '<(output_root)', |
- '../..', # The chromium 'src' directory. |
- ], |
- 'direct_dependent_settings': { |
- 'defines': [ |
- '__STDC_CONSTANT_MACROS', # FFmpeg uses INT64_C. |
- ], |
- 'include_dirs': [ |
- '<(output_root)', |
- '../..', # The chromium 'src' directory. |
- ], |
- }, |
- 'actions': [ |
- { |
- 'action_name': 'generate_stubs', |
- 'inputs': [ |
- '<(generate_stubs_script)', |
- '<(extra_header)', |
- '<@(sig_files)', |
- ], |
- 'outputs': [ |
- '<(intermediate_dir)/<(stubs_filename_root).cc', |
- '<(output_root)/<(project_path)/<(stubs_filename_root).h', |
- ], |
- 'action': ['python', |
- '<(generate_stubs_script)', |
- '-i', '<(intermediate_dir)', |
- '-o', '<(output_root)/<(project_path)', |
- '-t', '<(outfile_type)', |
- '-e', '<(extra_header)', |
- '-s', '<(stubs_filename_root)', |
- '-p', '<(project_path)', |
- '<@(_inputs)', |
- ], |
- 'process_outputs_as_sources': 1, |
- 'message': 'Generating FFmpeg stubs for dynamic loading.', |
- }, |
- ], |
- |
- 'conditions': [ |
- # Linux/Solaris need libdl for dlopen() and friends. |
- ['OS=="linux" or OS=="solaris"', { |
- 'link_settings': { |
- 'libraries': [ |
- '-ldl', |
- ], |
- }, |
- }], |
- |
- # Add pkg-config result to include path when use_system_ffmpeg!=0 |
- ['use_system_ffmpeg!=0', { |
- 'cflags': [ |
- '<!@(pkg-config --cflags libavcodec libavformat libavutil)', |
- ], |
- 'direct_dependent_settings': { |
- 'cflags': [ |
- '<!@(pkg-config --cflags libavcodec libavformat libavutil)', |
- ], |
- }, |
- }, { # else use_system_ffmpeg==0, add local copy to include path |
- 'include_dirs': [ |
- 'source/config', |
- 'source/patched-ffmpeg-mt', |
- ], |
- 'direct_dependent_settings': { |
- 'include_dirs': [ |
- 'source/config', |
- 'source/patched-ffmpeg-mt', |
- ], |
- }, |
- 'conditions': [ |
- ['build_ffmpegsumo!=0', { |
- 'dependencies': [ |
- 'ffmpegsumo_nolink', |
- ], |
- }], |
- ], |
- }], |
- ], # conditions |
- }], |
- ], # conditions |
- }, |
- ], # targets |
-} |
- |
-# Local Variables: |
-# tab-width:2 |
-# indent-tabs-mode:nil |
-# End: |
-# vim: set expandtab tabstop=2 shiftwidth=2: |