Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(387)

Unified Diff: third_party/ffmpeg/ffmpeg.gyp

Issue 340072: FFmpeg in-tree build for mac. (Closed)
Patch Set: work around link-settings bug. Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/ffmpeg/README.chromium ('k') | third_party/ffmpeg/source/config/Chrome/mac/ia32/config.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/ffmpeg/ffmpeg.gyp
diff --git a/third_party/ffmpeg/ffmpeg.gyp b/third_party/ffmpeg/ffmpeg.gyp
index 6ce8fd3318f8701e0339a7669a2ff0283e151128..e490ca60698027e10f11fd48b2a77435899f6de6 100755
--- a/third_party/ffmpeg/ffmpeg.gyp
+++ b/third_party/ffmpeg/ffmpeg.gyp
@@ -2,6 +2,8 @@
# 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': [
@@ -38,7 +40,7 @@
#
# 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") or use_system_ffmpeg!=0', {
+ ['(OS!="linux" and OS!="freebsd" and OS!="mac") or use_system_ffmpeg!=0', {
'variables': {
'target_for_binaries': 'ffmpeg_binaries',
'ffmpeg_include_root': 'include',
@@ -51,6 +53,7 @@
'targets': [
{
'target_name': 'ffmpegsumo',
+ 'product_name': 'libffmpegsumo',
'type': 'shared_library',
'dependencies': [
'make_ffmpeg_asm_lib',
@@ -149,42 +152,14 @@
'source/config/<(ffmpeg_branding)/<(OS)/<(target_arch)',
'source/patched-ffmpeg-mt',
],
- 'cflags': [
- '-DHAVE_AV_CONFIG_H',
- '-D_ISOC99_SOURCE',
- '-D_POSIX_C_SOURCE=200112',
- '-std=c99',
- '-D_LARGEFILE_SOURCE',
- '-pthread',
- '-fno-math-errno',
- '-fomit-frame-pointer'
- ],
- 'cflags!': [
- # Ensure the symbols are exported.
- '-fvisibility=hidden',
+ 'defines': [
+ 'HAVE_AV_CONFIG_H',
+ '_POSIX_C_SOURCE=200112',
],
- 'ldflags': [
- '-Wl,-Bsymbolic',
- '-L<(shared_generated_dir)',
- ],
- 'libraries': [
- '-l<(asm_library)',
- '-lm',
-
- # TODO(ajwong): Statically link these once we resolve the
- # PIC/non-PIC issues on x64.
- '-lz',
+ 'cflags': [
+ '-fomit-frame-pointer',
],
'conditions': [
- ['target_arch=="x64"', {
- 'cflags': [
- # 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.
- '-fPIC',
- '-DPIC',
- ],
- }],
['ffmpeg_branding!="Chrome"', {
'sources!': [
# Exclude files that should only be used if doing a branded
@@ -212,7 +187,87 @@
'source/patched-ffmpeg-mt/libavformat/mov.c',
'source/patched-ffmpeg-mt/libavformat/mp3.c',
],
- }],
+ }], # ffmpeg_branding
+ ['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
+ ['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': [
+ # 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)',
+
+ '-lz',
+ ],
+ },
+ }], # 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': [
{
@@ -248,23 +303,54 @@
'rules': [
{
'conditions': [
- ['target_arch=="ia32"', {
+ ['OS=="linux" or OS=="freebsd"', {
'variables': {
- 'yasm_flags': [
- '-DARCH_X86_32',
- '-m', 'x86',
- ],
+ 'obj_format': 'elf',
},
- },],
- ['target_arch=="x64"', {
+ 'conditions': [
+ ['target_arch=="ia32"', {
+ 'variables': {
+ 'yasm_flags': [
+ '-DARCH_X86_32',
+ '-m', 'x86',
+ ],
+ },
+ }],
+ ['target_arch=="x64"', {
+ 'variables': {
+ 'yasm_flags': [
+ '-DARCH_X86_64',
+ '-m', 'amd64',
+ '-DPIC',
+ ],
+ },
+ }],
+ ],
+ }], ['OS=="mac"', {
'variables': {
- 'yasm_flags': [
- '-DARCH_X86_64',
- '-m', 'amd64',
- '-DPIC',
- ],
+ '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',
@@ -274,7 +360,7 @@
],
'action': [
'<(PRODUCT_DIR)/yasm',
- '-f', 'elf',
+ '-f', '<(obj_format)',
'<@(yasm_flags)',
'-I', 'source/patched-ffmpeg-mt/libavcodec/x86/',
'-o', '<(shared_generated_dir)/<(RULE_INPUT_ROOT).o',
@@ -303,7 +389,7 @@
'<(shared_generated_dir)/dsputil_yasm.o',
'<(shared_generated_dir)/fft_mmx.o',
],
- 'library_path': '<(shared_generated_dir)/lib<(asm_library)<(STATIC_LIB_SUFFIX)',
+ 'library_path': '<(shared_generated_dir)/<(STATIC_LIB_PREFIX)<(asm_library)<(STATIC_LIB_SUFFIX)',
},
'inputs': [ '<@(asm_objects)', ],
'outputs': [ '<(library_path)', ],
@@ -549,9 +635,6 @@
# Need to consolidate the copies in one place. (BUG=23602)
'variables': {
'source_files': [
- 'binaries/<(ffmpeg_bin_dir)/libavcodec.52.dylib',
- 'binaries/<(ffmpeg_bin_dir)/libavformat.52.dylib',
- 'binaries/<(ffmpeg_bin_dir)/libavutil.50.dylib',
],
},
}],
« no previous file with comments | « third_party/ffmpeg/README.chromium ('k') | third_party/ffmpeg/source/config/Chrome/mac/ia32/config.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698