summaryrefslogtreecommitdiffstats
path: root/media/libopus/update.sh
diff options
context:
space:
mode:
Diffstat (limited to 'media/libopus/update.sh')
-rwxr-xr-xmedia/libopus/update.sh78
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