diff options
Diffstat (limited to 'media/libopus/update.sh')
-rwxr-xr-x | media/libopus/update.sh | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/media/libopus/update.sh b/media/libopus/update.sh new file mode 100755 index 000000000..b36391b05 --- /dev/null +++ b/media/libopus/update.sh @@ -0,0 +1,78 @@ +#!/bin/sh +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# +# Usage: ./update.sh <opus_src_directory> +# +# Copies the needed files from a directory containing the original +# libopus source, and applies any local patches we're carrying. + +TARGET='.' + +STATIC_FILES="COPYING celt/arm/arm2gnu.pl" +MK_FILES="opus_sources.mk celt_sources.mk silk_sources.mk \ + opus_headers.mk celt_headers.mk silk_headers.mk" + +# Make sure we have a source directory +if test -z $1 || ! test -r $1/include/opus.h; then + echo "Update the current directory from a source checkout" + echo "usage: $0 ../opus" + exit 1 +fi + +# "parse" the makefile fragments to get the list of source files +# requires GNU sed extensions +SRC_FILES=$(sed -e ':a;N;$!ba;s/#[^\n]*\(\n\)/\1/g;s/\\\n//g;s/[A-Z_]* = //g' \ + $(for file in ${MK_FILES}; do echo "$1/${file}"; done)) + +# pre-release versions of the code don't list opus_custom.h +# in celt_headers.mk, so we must include it manually +HDR_FILES="include/opus_custom.h" + +# make sure the necessary subdirectories exist +for file in ${SRC_FILES}; do + base=${file##*/} + dir="${file%"${base}"}" + if test ! -d "${TARGET}/${dir}"; then + cmd="mkdir -p ${TARGET}/${dir}" + echo ${cmd} + ${cmd} + fi +done + +# copy files into the target directory +for file in ${STATIC_FILES} ${SRC_FILES} ${HDR_FILES}; do + cmd="cp $1/${file} ${TARGET}/${file}" + echo ${cmd} + ${cmd} +done + +sed \ + -e s/@OPUS_ARM_MAY_HAVE_EDSP@/1/g \ + -e s/@OPUS_ARM_MAY_HAVE_MEDIA@/1/g \ + -e s/@OPUS_ARM_MAY_HAVE_NEON@/1/g \ + $1/celt/arm/armopts.s.in > ${TARGET}/celt/arm/armopts.s + +# query git for the revision we're copying from +if test -d $1/.git; then + version=$(cd $1 && git describe --tags --match 'v*' --dirty) +else + version="UNKNOWN" +fi +echo "copied from revision ${version}" +# update README revision +sed -e "s/^The git tag\/revision used was .*/The git tag\/revision used was ${version}./" \ + ${TARGET}/README_MOZILLA > ${TARGET}/README_MOZILLA+ && \ + mv ${TARGET}/README_MOZILLA+ ${TARGET}/README_MOZILLA +# update compiled-in version string +sed -e "s/DEFINES\['OPUS_VERSION'\][ \t]*=[ \t]*'\".*\"'/DEFINES['OPUS_VERSION'] = '\"${version}-mozilla\"'/" \ + ${TARGET}/moz.build > ${TARGET}/moz.build+ && \ + mv ${TARGET}/moz.build+ ${TARGET}/moz.build + +python gen-sources.py $1 + +# apply outstanding local patches +patch -p3 < gcc-4.8-ICE.patch +patch -p3 < nonunified.patch |