OLD | NEW |
1 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2010 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 # There's a couple key GYP variables that control how FFmpeg is built: | 5 # There's a couple key GYP variables that control how FFmpeg is built: |
6 # ffmpeg_branding | 6 # ffmpeg_branding |
7 # Controls whether we build the Chromium or Google Chrome version of | 7 # Controls whether we build the Chromium or Google Chrome version of |
8 # FFmpeg. The Google Chrome version contains additional codecs. | 8 # FFmpeg. The Google Chrome version contains additional codecs. |
9 # Typical values are Chromium, Chrome, ChromiumOS, and ChromeOS. | 9 # Typical values are Chromium, Chrome, ChromiumOS, and ChromeOS. |
10 # use_system_ffmpeg | 10 # use_system_ffmpeg |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 'ffmpeg_config%': 'arm-neon', | 49 'ffmpeg_config%': 'arm-neon', |
50 }, { | 50 }, { |
51 'ffmpeg_config%': '<(target_arch)', | 51 'ffmpeg_config%': '<(target_arch)', |
52 }], | 52 }], |
53 ['target_arch=="x64" or target_arch=="ia32"', { | 53 ['target_arch=="x64" or target_arch=="ia32"', { |
54 'ffmpeg_asm_lib': 1, | 54 'ffmpeg_asm_lib': 1, |
55 }], | 55 }], |
56 ['target_arch=="arm"', { | 56 ['target_arch=="arm"', { |
57 'ffmpeg_asm_lib': 0, | 57 'ffmpeg_asm_lib': 0, |
58 }], | 58 }], |
| 59 |
| 60 # libvpx location. |
| 61 # TODO(scherkus): libvpx_hack_dir is a hack to make -L work on linux. |
| 62 ['OS=="mac" or OS=="win"', { |
| 63 'libvpx_dir': '../libvpx', |
| 64 'libvpx_hack_dir': '../libvpx', |
| 65 }, { |
| 66 'libvpx_dir': '../libvpx', |
| 67 'libvpx_hack_dir': 'third_party/libvpx', |
| 68 }], |
59 ], | 69 ], |
60 'ffmpeg_variant%': '<(target_arch)', | 70 'ffmpeg_variant%': '<(target_arch)', |
61 | 71 |
62 'use_system_ffmpeg%': 0, | 72 'use_system_ffmpeg%': 0, |
63 'use_system_yasm%': 0, | 73 'use_system_yasm%': 0, |
64 'build_ffmpegsumo%': 1, | 74 'build_ffmpegsumo%': 1, |
65 | 75 |
66 # Locations for generated artifacts. | 76 # Locations for generated artifacts. |
67 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/ffmpeg', | 77 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/ffmpeg', |
68 'asm_library': 'ffmpegasm', | 78 'asm_library': 'ffmpegasm', |
(...skipping 10 matching lines...) Expand all Loading... |
79 'source/patched-ffmpeg-mt/libavcodec/avpacket.c', | 89 'source/patched-ffmpeg-mt/libavcodec/avpacket.c', |
80 'source/patched-ffmpeg-mt/libavcodec/bitstream.c', | 90 'source/patched-ffmpeg-mt/libavcodec/bitstream.c', |
81 'source/patched-ffmpeg-mt/libavcodec/bitstream_filter.c', | 91 'source/patched-ffmpeg-mt/libavcodec/bitstream_filter.c', |
82 'source/patched-ffmpeg-mt/libavcodec/dsputil.c', | 92 'source/patched-ffmpeg-mt/libavcodec/dsputil.c', |
83 'source/patched-ffmpeg-mt/libavcodec/eval.c', | 93 'source/patched-ffmpeg-mt/libavcodec/eval.c', |
84 'source/patched-ffmpeg-mt/libavcodec/faanidct.c', | 94 'source/patched-ffmpeg-mt/libavcodec/faanidct.c', |
85 'source/patched-ffmpeg-mt/libavcodec/fft.c', | 95 'source/patched-ffmpeg-mt/libavcodec/fft.c', |
86 'source/patched-ffmpeg-mt/libavcodec/golomb.c', | 96 'source/patched-ffmpeg-mt/libavcodec/golomb.c', |
87 'source/patched-ffmpeg-mt/libavcodec/imgconvert.c', | 97 'source/patched-ffmpeg-mt/libavcodec/imgconvert.c', |
88 'source/patched-ffmpeg-mt/libavcodec/jrevdct.c', | 98 'source/patched-ffmpeg-mt/libavcodec/jrevdct.c', |
| 99 'source/patched-ffmpeg-mt/libavcodec/libvpxdec.c', |
89 'source/patched-ffmpeg-mt/libavcodec/mdct.c', | 100 'source/patched-ffmpeg-mt/libavcodec/mdct.c', |
90 'source/patched-ffmpeg-mt/libavcodec/mpeg12data.c', | 101 'source/patched-ffmpeg-mt/libavcodec/mpeg12data.c', |
91 'source/patched-ffmpeg-mt/libavcodec/mpeg4audio.c', | 102 'source/patched-ffmpeg-mt/libavcodec/mpeg4audio.c', |
92 'source/patched-ffmpeg-mt/libavcodec/opt.c', | 103 'source/patched-ffmpeg-mt/libavcodec/opt.c', |
93 'source/patched-ffmpeg-mt/libavcodec/options.c', | 104 'source/patched-ffmpeg-mt/libavcodec/options.c', |
94 'source/patched-ffmpeg-mt/libavcodec/parser.c', | 105 'source/patched-ffmpeg-mt/libavcodec/parser.c', |
95 'source/patched-ffmpeg-mt/libavcodec/pthread.c', | 106 'source/patched-ffmpeg-mt/libavcodec/pthread.c', |
96 'source/patched-ffmpeg-mt/libavcodec/raw.c', | 107 'source/patched-ffmpeg-mt/libavcodec/raw.c', |
97 'source/patched-ffmpeg-mt/libavcodec/simple_idct.c', | 108 'source/patched-ffmpeg-mt/libavcodec/simple_idct.c', |
98 'source/patched-ffmpeg-mt/libavcodec/utils.c', | 109 'source/patched-ffmpeg-mt/libavcodec/utils.c', |
99 'source/patched-ffmpeg-mt/libavcodec/vorbis.c', | 110 'source/patched-ffmpeg-mt/libavcodec/vorbis.c', |
100 'source/patched-ffmpeg-mt/libavcodec/vorbis_data.c', | 111 'source/patched-ffmpeg-mt/libavcodec/vorbis_data.c', |
101 'source/patched-ffmpeg-mt/libavcodec/vorbis_dec.c', | 112 'source/patched-ffmpeg-mt/libavcodec/vorbis_dec.c', |
102 'source/patched-ffmpeg-mt/libavcodec/vp3.c', | 113 'source/patched-ffmpeg-mt/libavcodec/vp3.c', |
103 'source/patched-ffmpeg-mt/libavcodec/vp3dsp.c', | 114 'source/patched-ffmpeg-mt/libavcodec/vp3dsp.c', |
104 'source/patched-ffmpeg-mt/libavcodec/xiph.c', | 115 'source/patched-ffmpeg-mt/libavcodec/xiph.c', |
105 'source/patched-ffmpeg-mt/libavformat/allformats.c', | 116 'source/patched-ffmpeg-mt/libavformat/allformats.c', |
106 'source/patched-ffmpeg-mt/libavformat/avi.c', | 117 'source/patched-ffmpeg-mt/libavformat/avi.c', |
107 'source/patched-ffmpeg-mt/libavformat/avio.c', | 118 'source/patched-ffmpeg-mt/libavformat/avio.c', |
108 'source/patched-ffmpeg-mt/libavformat/aviobuf.c', | 119 'source/patched-ffmpeg-mt/libavformat/aviobuf.c', |
109 'source/patched-ffmpeg-mt/libavformat/cutils.c', | 120 'source/patched-ffmpeg-mt/libavformat/cutils.c', |
110 'source/patched-ffmpeg-mt/libavformat/id3v1.c', | 121 'source/patched-ffmpeg-mt/libavformat/id3v1.c', |
111 'source/patched-ffmpeg-mt/libavformat/isom.c', | 122 'source/patched-ffmpeg-mt/libavformat/isom.c', |
| 123 'source/patched-ffmpeg-mt/libavformat/matroska.c', |
| 124 'source/patched-ffmpeg-mt/libavformat/matroskadec.c', |
112 'source/patched-ffmpeg-mt/libavformat/metadata.c', | 125 'source/patched-ffmpeg-mt/libavformat/metadata.c', |
113 'source/patched-ffmpeg-mt/libavformat/metadata_compat.c', | 126 'source/patched-ffmpeg-mt/libavformat/metadata_compat.c', |
114 'source/patched-ffmpeg-mt/libavformat/oggdec.c', | 127 'source/patched-ffmpeg-mt/libavformat/oggdec.c', |
115 'source/patched-ffmpeg-mt/libavformat/oggparseogm.c', | 128 'source/patched-ffmpeg-mt/libavformat/oggparseogm.c', |
116 'source/patched-ffmpeg-mt/libavformat/oggparsetheora.c', | 129 'source/patched-ffmpeg-mt/libavformat/oggparsetheora.c', |
117 'source/patched-ffmpeg-mt/libavformat/oggparsevorbis.c', | 130 'source/patched-ffmpeg-mt/libavformat/oggparsevorbis.c', |
118 'source/patched-ffmpeg-mt/libavformat/options.c', | 131 'source/patched-ffmpeg-mt/libavformat/options.c', |
119 'source/patched-ffmpeg-mt/libavformat/riff.c', | 132 'source/patched-ffmpeg-mt/libavformat/riff.c', |
| 133 'source/patched-ffmpeg-mt/libavformat/rm.c', |
| 134 'source/patched-ffmpeg-mt/libavformat/rmdec.c', |
120 'source/patched-ffmpeg-mt/libavformat/utils.c', | 135 'source/patched-ffmpeg-mt/libavformat/utils.c', |
121 'source/patched-ffmpeg-mt/libavformat/vorbiscomment.c', | 136 'source/patched-ffmpeg-mt/libavformat/vorbiscomment.c', |
122 'source/patched-ffmpeg-mt/libavutil/avstring.c', | 137 'source/patched-ffmpeg-mt/libavutil/avstring.c', |
| 138 'source/patched-ffmpeg-mt/libavutil/base64.c', |
123 'source/patched-ffmpeg-mt/libavutil/crc.c', | 139 'source/patched-ffmpeg-mt/libavutil/crc.c', |
124 'source/patched-ffmpeg-mt/libavutil/intfloat_readwrite.c', | 140 'source/patched-ffmpeg-mt/libavutil/intfloat_readwrite.c', |
125 'source/patched-ffmpeg-mt/libavutil/log.c', | 141 'source/patched-ffmpeg-mt/libavutil/log.c', |
| 142 'source/patched-ffmpeg-mt/libavutil/lzo.c', |
126 'source/patched-ffmpeg-mt/libavutil/mathematics.c', | 143 'source/patched-ffmpeg-mt/libavutil/mathematics.c', |
127 'source/patched-ffmpeg-mt/libavutil/mem.c', | 144 'source/patched-ffmpeg-mt/libavutil/mem.c', |
128 'source/patched-ffmpeg-mt/libavutil/pixdesc.c', | 145 'source/patched-ffmpeg-mt/libavutil/pixdesc.c', |
129 'source/patched-ffmpeg-mt/libavutil/rational.c', | 146 'source/patched-ffmpeg-mt/libavutil/rational.c', |
130 # Config file for the OS and architecture. | 147 # Config file for the OS and architecture. |
131 'source/config/<(ffmpeg_branding)/<(OS)/<(ffmpeg_config)/config.h', | 148 'source/config/<(ffmpeg_branding)/<(OS)/<(ffmpeg_config)/config.h', |
132 'source/config/libavutil/avconfig.h', | 149 'source/config/libavutil/avconfig.h', |
133 ], | 150 ], |
134 'include_dirs': [ | 151 'include_dirs': [ |
135 'source/config/<(ffmpeg_branding)/<(OS)/<(ffmpeg_config)', | 152 'source/config/<(ffmpeg_branding)/<(OS)/<(ffmpeg_config)', |
136 'source/patched-ffmpeg-mt', | 153 'source/patched-ffmpeg-mt', |
137 'source/config', | 154 'source/config', |
| 155 '<(libvpx_dir)/include', |
138 ], | 156 ], |
139 'defines': [ | 157 'defines': [ |
140 'HAVE_AV_CONFIG_H', | 158 'HAVE_AV_CONFIG_H', |
141 '_POSIX_C_SOURCE=200112', | 159 '_POSIX_C_SOURCE=200112', |
142 ], | 160 ], |
143 'cflags': [ | 161 'cflags': [ |
144 '-fomit-frame-pointer', | 162 '-fomit-frame-pointer', |
145 ], | 163 ], |
146 'conditions': [ | 164 'conditions': [ |
147 ['ffmpeg_branding=="Chrome" or ffmpeg_branding=="ChromeOS"', { | 165 ['ffmpeg_branding=="Chrome" or ffmpeg_branding=="ChromeOS"', { |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 # Ensure the symbols are exported. | 375 # Ensure the symbols are exported. |
358 # | 376 # |
359 # TODO(ajwong): Fix common.gypi to only add this flag for | 377 # TODO(ajwong): Fix common.gypi to only add this flag for |
360 # _type != shared_library. | 378 # _type != shared_library. |
361 '-fvisibility=hidden', | 379 '-fvisibility=hidden', |
362 ], | 380 ], |
363 'link_settings': { | 381 'link_settings': { |
364 'ldflags': [ | 382 'ldflags': [ |
365 '-Wl,-Bsymbolic', | 383 '-Wl,-Bsymbolic', |
366 '-L<(shared_generated_dir)', | 384 '-L<(shared_generated_dir)', |
| 385 '-L<(libvpx_hack_dir)/lib/<(OS)/<(target_arch)', |
367 ], | 386 ], |
368 'libraries': [ | 387 'libraries': [ |
369 '-lz', | 388 '-lz', |
| 389 '-lvpx', |
370 ], | 390 ], |
371 'conditions': [ | 391 'conditions': [ |
372 ['ffmpeg_asm_lib==1', { | 392 ['ffmpeg_asm_lib==1', { |
373 'libraries': [ | 393 'libraries': [ |
374 # TODO(ajwong): When scons is dead, collapse this with the | 394 # TODO(ajwong): When scons is dead, collapse this with the |
375 # absolute path entry inside the OS="mac" conditional, and | 395 # absolute path entry inside the OS="mac" conditional, and |
376 # move it out of the conditionals block altogether. | 396 # move it out of the conditionals block altogether. |
377 '-l<(asm_library)', | 397 '-l<(asm_library)', |
378 ], | 398 ], |
379 }], | 399 }], |
380 ], | 400 ], |
381 }, | 401 }, |
382 }], # OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris
" | 402 }], # OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris
" |
383 ['OS=="mac"', { | 403 ['OS=="mac"', { |
384 'libraries': [ | 404 'libraries': [ |
385 # TODO(ajwong): Move into link_settings when this is fixed: | 405 # TODO(ajwong): Move into link_settings when this is fixed: |
386 # | 406 # |
387 # http://code.google.com/p/gyp/issues/detail?id=108 | 407 # http://code.google.com/p/gyp/issues/detail?id=108 |
388 '<(shared_generated_dir)/<(STATIC_LIB_PREFIX)<(asm_library)<(STA
TIC_LIB_SUFFIX)', | 408 '<(shared_generated_dir)/<(STATIC_LIB_PREFIX)<(asm_library)<(STA
TIC_LIB_SUFFIX)', |
| 409 '<(libvpx_hack_dir)/lib/<(OS)/<(target_arch)/libvpx.a', |
389 ], | 410 ], |
390 'link_settings': { | 411 'link_settings': { |
391 'libraries': [ | 412 'libraries': [ |
392 '$(SDKROOT)/usr/lib/libz.dylib', | 413 '$(SDKROOT)/usr/lib/libz.dylib', |
393 ], | 414 ], |
394 }, | 415 }, |
395 'xcode_settings': { | 416 'xcode_settings': { |
396 'GCC_SYMBOLS_PRIVATE_EXTERN': 'NO', # No -fvisibility=hidden | 417 'GCC_SYMBOLS_PRIVATE_EXTERN': 'NO', # No -fvisibility=hidden |
397 'GCC_DYNAMIC_NO_PIC': 'YES', # -mdynamic-no-pic | 418 'GCC_DYNAMIC_NO_PIC': 'YES', # -mdynamic-no-pic |
398 # (equiv -fno-PIC) | 419 # (equiv -fno-PIC) |
399 'DYLIB_INSTALL_NAME_BASE': '@loader_path', | 420 'DYLIB_INSTALL_NAME_BASE': '@loader_path', |
400 'LIBRARY_SEARCH_PATHS': [ | 421 'LIBRARY_SEARCH_PATHS': [ |
401 '<(shared_generated_dir)' | 422 '<(shared_generated_dir)' |
402 ], | 423 ], |
403 'OTHER_LDFLAGS': [ | 424 'OTHER_LDFLAGS': [ |
404 # This is needed because FFmpeg cannot be built as PIC, and | 425 # This is needed because FFmpeg cannot be built as PIC, and |
405 # thus we need to instruct the linker to allow relocations | 426 # thus we need to instruct the linker to allow relocations |
406 # for read-only segments for this target to be able to | 427 # for read-only segments for this target to be able to |
407 # generated the shared library on Mac. | 428 # generated the shared library on Mac. |
408 # | 429 # |
409 # This makes Mark sad, but he's okay with it since it is | 430 # This makes Mark sad, but he's okay with it since it is |
410 # isolated to this module. When Mark finds this in the | 431 # isolated to this module. When Mark finds this in the |
411 # future, and has forgotten this conversation, this comment | 432 # future, and has forgotten this conversation, this comment |
412 # should remind him that the world is still nice and | 433 # should remind him that the world is still nice and |
413 # butterflies still exist...as do rainbows, sunshine, | 434 # butterflies still exist...as do rainbows, sunshine, |
414 # tulips, etc., etc...but not kittens. Those went away | 435 # tulips, etc., etc...but not kittens. Those went away |
415 # with this flag. | 436 # with this flag. |
416 '-Wl,-read_only_relocs,suppress' | 437 '-Wl,-read_only_relocs,suppress', |
| 438 '-L<(libvpx_hack_dir)/lib/mac/ia32' |
417 ], | 439 ], |
418 }, | 440 }, |
419 }], # OS=="mac" | 441 }], # OS=="mac" |
420 ], | 442 ], |
421 'actions': [ | 443 'actions': [ |
422 { | 444 { |
423 # Needed to serialize the output of make_ffmpeg_asm_lib with | 445 # Needed to serialize the output of make_ffmpeg_asm_lib with |
424 # this target being built. | 446 # this target being built. |
425 'action_name': 'ffmpegasm_barrier', | 447 'action_name': 'ffmpegasm_barrier', |
426 'inputs': [ | 448 'inputs': [ |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
799 ], # conditions | 821 ], # conditions |
800 }, | 822 }, |
801 ], # targets | 823 ], # targets |
802 } | 824 } |
803 | 825 |
804 # Local Variables: | 826 # Local Variables: |
805 # tab-width:2 | 827 # tab-width:2 |
806 # indent-tabs-mode:nil | 828 # indent-tabs-mode:nil |
807 # End: | 829 # End: |
808 # vim: set expandtab tabstop=2 shiftwidth=2: | 830 # vim: set expandtab tabstop=2 shiftwidth=2: |
OLD | NEW |