| # Copyright (c) 2009 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. |
| |
| # TODO(ajwong): Determine if we want to statically link libz. |
| |
| { |
| 'target_defaults': { |
| 'conditions': [ |
| ['OS!="linux" and OS!="freebsd"', {'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. |
| 'ffmpeg_branding%': '<(branding)', |
| 'ffmpeg_variant%': '<(target_arch)', |
| |
| 'use_system_ffmpeg%': 0, |
| |
| # Locations for generated artifacts. |
| 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/ffmpeg', |
| 'asm_library': 'ffmpegasm', |
| }, |
| 'conditions': [ |
| # This condition is for migrating from pre-built binaries to an in-tree |
| # source build. Most of these should be removed once FFmpeg is built on |
| # mac and linux. Windows will take more work. |
| # |
| # TODO(ajwong): Per the comment above, reduce this conditional's size and |
| # determine if in-tree build in Windows is tractable. |
| ['(OS!="linux" and OS!="freebsd" and OS!="mac") or use_system_ffmpeg!=0', { |
| 'variables': { |
| 'target_for_binaries': 'ffmpeg_binaries', |
| 'ffmpeg_include_root': 'include', |
| }, |
| },{ # else OS=="linux" |
| 'variables': { |
| 'target_for_binaries': 'ffmpegsumo_nolink', |
| 'ffmpeg_include_root': 'source/patched-ffmpeg-mt', |
| 'conditions': [ |
| ['target_arch=="x64" or target_arch=="ia32"', { |
| 'ffmpeg_asm_lib': 1, |
| }], |
| ['target_arch=="arm"', { |
| 'ffmpeg_asm_lib': 0, |
| }], |
| ], |
| }, |
| 'targets': [ |
| { |
| 'target_name': 'ffmpegsumo', |
| 'product_name': 'libffmpegsumo', |
| 'type': 'shared_library', |
| '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/aactab.c', |
| '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/cabac.c', |
| 'source/patched-ffmpeg-mt/libavcodec/dsputil.c', |
| 'source/patched-ffmpeg-mt/libavcodec/error_resilience.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/h264.c', |
| 'source/patched-ffmpeg-mt/libavcodec/h264_parser.c', |
| 'source/patched-ffmpeg-mt/libavcodec/h264idct.c', |
| 'source/patched-ffmpeg-mt/libavcodec/h264pred.c', |
| 'source/patched-ffmpeg-mt/libavcodec/imgconvert.c', |
| 'source/patched-ffmpeg-mt/libavcodec/jrevdct.c', |
| 'source/patched-ffmpeg-mt/libavcodec/mdct.c', |
| 'source/patched-ffmpeg-mt/libavcodec/mpeg4audio.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/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/resample.c', |
| 'source/patched-ffmpeg-mt/libavcodec/resample2.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/avio.c', |
| 'source/patched-ffmpeg-mt/libavformat/aviobuf.c', |
| 'source/patched-ffmpeg-mt/libavformat/cutils.c', |
| 'source/patched-ffmpeg-mt/libavformat/id3v2.c', |
| 'source/patched-ffmpeg-mt/libavformat/isom.c', |
| 'source/patched-ffmpeg-mt/libavformat/metadata.c', |
| 'source/patched-ffmpeg-mt/libavformat/metadata_compat.c', |
| 'source/patched-ffmpeg-mt/libavformat/mov.c', |
| 'source/patched-ffmpeg-mt/libavformat/mp3.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/os_support.c', |
| 'source/patched-ffmpeg-mt/libavformat/riff.c', |
| 'source/patched-ffmpeg-mt/libavformat/sdp.c', |
| 'source/patched-ffmpeg-mt/libavformat/utils.c', |
| 'source/patched-ffmpeg-mt/libavutil/avstring.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/mathematics.c', |
| 'source/patched-ffmpeg-mt/libavutil/mem.c', |
| 'source/patched-ffmpeg-mt/libavutil/rational.c', |
| |
| # Config file for the OS and architecture. |
| 'source/config/<(ffmpeg_branding)/<(OS)/<(target_arch)/config.h', |
| ], |
| 'include_dirs': [ |
| 'source/config/<(ffmpeg_branding)/<(OS)/<(target_arch)', |
| 'source/patched-ffmpeg-mt', |
| ], |
| 'defines': [ |
| 'HAVE_AV_CONFIG_H', |
| '_POSIX_C_SOURCE=200112', |
| ], |
| 'cflags': [ |
| '-fomit-frame-pointer', |
| ], |
| 'conditions': [ |
| ['ffmpeg_branding!="Chrome"', { |
| 'sources!': [ |
| # Exclude files that should only be used if doing a branded |
| # Google Chrome build. |
| '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/aactab.c', |
| 'source/patched-ffmpeg-mt/libavcodec/cabac.c', |
| 'source/patched-ffmpeg-mt/libavcodec/error_resilience.c', |
| 'source/patched-ffmpeg-mt/libavcodec/golomb.c', |
| 'source/patched-ffmpeg-mt/libavcodec/h264.c', |
| 'source/patched-ffmpeg-mt/libavcodec/h264_parser.c', |
| 'source/patched-ffmpeg-mt/libavcodec/h264idct.c', |
| 'source/patched-ffmpeg-mt/libavcodec/h264pred.c', |
| 'source/patched-ffmpeg-mt/libavcodec/mpeg4audio.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/libavformat/id3v2.c', |
| 'source/patched-ffmpeg-mt/libavformat/isom.c', |
| 'source/patched-ffmpeg-mt/libavformat/mov.c', |
| 'source/patched-ffmpeg-mt/libavformat/mp3.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/dnxhd_mmx.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_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/motion_est_mmx.c', |
| 'source/patched-ffmpeg-mt/libavcodec/x86/mpegvideo_mmx.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=="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', |
| '-march=armv7-a', |
| '-mtune=cortex-a8', |
| '-mfpu=neon', |
| '-mfloat-abi=softfp', |
| ], |
| 'sources': [ |
| 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_arm.c', |
| 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_arm_s.S', |
| 'source/patched-ffmpeg-mt/libavcodec/arm/dsputil_vfp.S', |
| 'source/patched-ffmpeg-mt/libavcodec/arm/float_arm_vfp.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', |
| 'source/patched-ffmpeg-mt/libavcodec/arm/simple_idct_neon.S', |
| ], |
| }], # target_arch=="arm" |
| ['OS=="linux" or OS=="freebsd"', { |
| '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': [ |
| ['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)', |
| ], |
| }], |
| ], |
| }, |
| }], # OS=="linux" or OS=="freebsd" |
| ['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)', |
| ], |
| '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' |
| ], |
| }, |
| }], # OS=="mac" |
| ], |
| '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', |
| 'dependencies': [ |
| '../yasm/yasm.gyp:yasm#host', |
| ], |
| '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"', { |
| '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': [ '<(PRODUCT_DIR)/yasm', ], |
| 'outputs': [ |
| '<(shared_generated_dir)/<(RULE_INPUT_ROOT).o', |
| ], |
| 'action': [ |
| '<(PRODUCT_DIR)/yasm', |
| '-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"', { |
| '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)'], |
| }, |
| ], |
| }], |
| ], |
| }, |
| ], |
| }], |
| ], |
| 'targets': [ |
| { |
| 'variables': { |
| 'generate_stubs_script': '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', |
| 'dependencies': [ |
| '<(target_for_binaries)', |
| 'ffmpeg_binaries', |
| ], |
| 'sources': [ |
| '<(ffmpeg_include_root)/libavcodec/avcodec.h', |
| '<(ffmpeg_include_root)/libavcodec/opt.h', |
| '<(ffmpeg_include_root)/libavcodec/vdpau.h', |
| '<(ffmpeg_include_root)/libavcodec/xvmc.h', |
| '<(ffmpeg_include_root)/libavformat/avformat.h', |
| '<(ffmpeg_include_root)/libavformat/avio.h', |
| '<(ffmpeg_include_root)/libavutil/avstring.h', |
| '<(ffmpeg_include_root)/libavutil/crc.h', |
| '<(ffmpeg_include_root)/libavutil/intfloat_readwrite.h', |
| '<(ffmpeg_include_root)/libavutil/log.h', |
| '<(ffmpeg_include_root)/libavutil/mathematics.h', |
| '<(ffmpeg_include_root)/libavutil/mem.h', |
| '<(ffmpeg_include_root)/libavutil/pixfmt.h', |
| '<(ffmpeg_include_root)/libavutil/rational.h', |
| |
| # 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, |
| 'direct_dependent_settings': { |
| 'include_dirs': [ |
| 'include', |
| ], |
| }, |
| 'conditions': [ |
| ['OS=="win"', |
| { |
| 'variables': { |
| 'outfile_type': 'windows_lib', |
| 'output_dir': '<(PRODUCT_DIR)/lib', |
| 'intermediate_dir': '<(INTERMEDIATE_DIR)', |
| }, |
| 'type': 'none', |
| 'sources!': [ |
| '<(extra_header)', |
| ], |
| 'direct_dependent_settings': { |
| 'include_dirs': [ |
| 'include/win', |
| ], |
| '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.', |
| }, |
| ], |
| }, { # else OS!="win" |
| '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': [ |
| 'include', |
| '<(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.', |
| }, |
| ], |
| }, |
| ], |
| ['OS=="linux" or OS=="freebsd"', { |
| 'link_settings': { |
| 'libraries': [ |
| # We need dl for dlopen() and friends. |
| '-ldl', |
| ], |
| }, |
| }], |
| ], # conditions |
| }, |
| { |
| 'target_name': 'ffmpeg_binaries', |
| 'type': 'none', |
| 'msvs_guid': '4E4070E1-EFD9-4EF1-8634-3960956F6F10', |
| 'variables': { |
| 'conditions': [ |
| [ 'ffmpeg_branding=="Chrome"', { |
| 'ffmpeg_bin_dir': 'chrome/<(OS)/<(ffmpeg_variant)', |
| }, { # else ffmpeg_branding!="Chrome", assume chromium. |
| 'ffmpeg_bin_dir': 'chromium/<(OS)/<(ffmpeg_variant)', |
| }], |
| ], |
| }, |
| 'conditions': [ |
| ['OS=="win"', { |
| 'variables': { |
| 'source_files': [ |
| 'binaries/<(ffmpeg_bin_dir)/avcodec-52.dll', |
| 'binaries/<(ffmpeg_bin_dir)/avformat-52.dll', |
| 'binaries/<(ffmpeg_bin_dir)/avutil-50.dll', |
| ], |
| }, |
| 'dependencies': ['../../build/win/system.gyp:cygwin'], |
| }], ['OS=="linux" or OS=="freebsd"', { |
| 'variables': { |
| # TODO(ajwong): Clean this up after we've finished |
| # migrating to in-tree build. |
| 'source_files': [ |
| ], |
| }, |
| }], ['OS=="mac"', { |
| # TODO(ajwong): These files are also copied in: |
| # webkit/tools/test_shell/test_shell.gyp and |
| # chrome/chrome.gyp |
| # Need to consolidate the copies in one place. (BUG=23602) |
| 'variables': { |
| 'source_files': [ |
| ], |
| }, |
| }], |
| ], |
| 'copies': [ |
| { |
| 'destination': '<(PRODUCT_DIR)/', |
| 'files': [ |
| '<@(source_files)', |
| ] |
| }, |
| ], |
| }, |
| ], |
| } |
| |
| # Local Variables: |
| # tab-width:2 |
| # indent-tabs-mode:nil |
| # End: |
| # vim: set expandtab tabstop=2 shiftwidth=2: |