diff options
author | ajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-30 00:35:10 +0000 |
---|---|---|
committer | ajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-30 00:35:10 +0000 |
commit | 24882a3d54903733ccddc3d61e87fcf4fc844c50 (patch) | |
tree | d3c911a1a1ca4e7915cb70de7d1258caa74fd91c /third_party | |
parent | a11700d055efc8581b9e7b652360e13243f31cf5 (diff) | |
download | chromium_src-24882a3d54903733ccddc3d61e87fcf4fc844c50.zip chromium_src-24882a3d54903733ccddc3d61e87fcf4fc844c50.tar.gz chromium_src-24882a3d54903733ccddc3d61e87fcf4fc844c50.tar.bz2 |
Add in support for copying the ffmpeg binaries in linux and mac.
Review URL: http://codereview.chromium.org/149121
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19570 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party')
-rwxr-xr-x | third_party/ffmpeg/copy_binaries.sh | 38 | ||||
-rwxr-xr-x | third_party/ffmpeg/ffmpeg.gyp | 85 |
2 files changed, 94 insertions, 29 deletions
diff --git a/third_party/ffmpeg/copy_binaries.sh b/third_party/ffmpeg/copy_binaries.sh index fb59e15..5c7f412 100755 --- a/third_party/ffmpeg/copy_binaries.sh +++ b/third_party/ffmpeg/copy_binaries.sh @@ -1,13 +1,39 @@ #!/bin/bash # -# Copies FFmpeg binaries due to gyp limitations on how much you can cram -# into a rules action. +# This is meant to replicate the behavior of cp, except that it will not fail +# if the source files are not present. Something like +# "cp ${SOURCES} ${DEST} || true" would also have worked except that +# gyp does not allow for specifying || in the action, and the windows +# cygwin envrionment does not include "true" making a script like this the +# least ugly solution. -SOURCE=$1 -DESTINATION=$2 +SOURCES="" +DESTINATION="" -# Our cygwin environment is very limited: "if" isn't available. -test -f $SOURCE && cp -v -f $SOURCE $DESTINATION +# Shift off every argument but the last and consider them the sources. +# It would have probably been easier to put the destination first, but +# this is not too hard and it replicates the argument ordering of cp. +while (( "$#" != 1 )); do + SOURCES="$SOURCES $1" + shift +done + +DESTINATION=$1 + +# Early out if there was not enough parameters to discern a destination. +# Also fail the command because this means we are being invoked incorrectly. +if test -z "$DESTINATION"; then + echo "ERROR: Destination empty." + exit 1 +fi + +# Only try to copy the source file if it exists. It is not an error +# if the input does not exist; we just silently ignore the input. +for i in $SOURCES; do + if test -f $i; then + cp -v -f $i $DESTINATION + fi +done # Make sure we always succeed. exit 0 diff --git a/third_party/ffmpeg/ffmpeg.gyp b/third_party/ffmpeg/ffmpeg.gyp index ff066f1..f24c03f 100755 --- a/third_party/ffmpeg/ffmpeg.gyp +++ b/third_party/ffmpeg/ffmpeg.gyp @@ -26,6 +26,9 @@ }, 'target_name': 'ffmpeg', 'msvs_guid': 'D7A94F58-576A-45D9-A45F-EB87C63ABBB0', + 'dependencies': [ + 'ffmpeg_binaries', + ], 'sources': [ 'include/libavcodec/avcodec.h', 'include/libavcodec/opt.h', @@ -69,9 +72,6 @@ 'intermediate_dir': '<(INTERMEDIATE_DIR)', }, 'type': 'none', - 'dependencies': [ - 'ffmpeg_binaries', - ], 'sources!': [ '<(extra_header)', ], @@ -175,29 +175,68 @@ 'msvs_guid': '4E4070E1-EFD9-4EF1-8634-3960956F6F10', 'conditions': [ ['OS=="win"', { - 'sources': [ - 'binaries/avcodec-52.dll', - 'binaries/avformat-52.dll', - 'binaries/avutil-50.dll', - 'binaries/pthreadGC2.dll', - ], + 'variables': { + 'source_files': [ + 'binaries/avcodeec-52.dll', + 'binaries/avformat-52.dll', + 'binaries/avutil-50.dll', + 'binaries/pthreadGC2.dll', + ], + 'output_files': [ + '<(PRODUCT_DIR)/avcodec-52.dll', + '<(PRODUCT_DIR)/avformat-52.dll', + '<(PRODUCT_DIR)/avutil-50.dll', + '<(PRODUCT_DIR)/pthreadGC2.dll', + ], + }, 'dependencies': ['../../build/win/system.gyp:cygwin'], - 'rules': [ - { - 'rule_name': 'copy_binaries', - 'extension': 'dll', - 'inputs': [ - 'copy_binaries.sh', - ], - 'outputs': [ - '<(PRODUCT_DIR)/<(RULE_INPUT_NAME)', - ], - 'action': ['./copy_binaries.sh', '"<@(RULE_INPUT_PATH)"', '"<@(PRODUCT_DIR)/<@(RULE_INPUT_NAME)"'], - 'message': 'Copying binaries...', - }, - ], + }], ['OS=="linux"', { + 'variables': { + 'source_files': [ + 'binaries/libavcodec.so.52', + 'binaries/libavformat.so.52', + 'binaries/libavutil.so.50', + ], + 'output_files': [ + '<(PRODUCT_DIR)/libavcodec.so.52', + '<(PRODUCT_DIR)/libavformat.so.52', + '<(PRODUCT_DIR)/libavutil.so.50', + ], + }, + }], ['OS=="mac"', { + 'variables': { + 'source_files': [ + 'binaries/libavcodec.52.dylib', + 'binaries/libavformat.52.dylib', + 'binaries/libavutil.50.dylib', + ], + 'output_files': [ + '<(PRODUCT_DIR)/libavcodec.52.dylib', + '<(PRODUCT_DIR)/libavformat.52.dylib', + '<(PRODUCT_DIR)/libavutil.50.dylib', + ], + }, }], ], + 'sources': [ + ], + 'actions': [ + { + 'action_name': 'copy_binaries', + 'inputs': [ + 'copy_binaries.sh', + ], + 'outputs': [ + '<@(output_files)', + ], + 'action': [ + './copy_binaries.sh', + '<@(source_files)', + '<(PRODUCT_DIR)/' + ], + 'message': 'Copying FFmpeg binaries...', + }, + ], }, ], } |