[vlc-devel] [PATCH] contrib: libvpx: allow compiling on android
Rafaël Carré
funman at videolan.org
Thu Jun 12 23:02:31 CEST 2014
Hi,
On 06/12/14 15:10, Vittorio Giovara wrote:
> ---
> I was able to compile libvpx on android using the gcc toolchain directly with
> the following modifications:
> - apply the mac patch only on mac
> - set the sdk as android sysroot because vpx configure.sh overrides it otherwise
> - add on missing include path that the configure script is not able to find
>
> Comments and improvement suggestions are welcome.
> Cheers,
> Vittorio
>
> contrib/src/vpx/libvpx-mac.patch | 2 +-
> contrib/src/vpx/libvpx-sysroot.patch | 21 +++++++++++++++++++++
> contrib/src/vpx/rules.mak | 10 +++++++++-
> 3 files changed, 31 insertions(+), 2 deletions(-)
> create mode 100644 contrib/src/vpx/libvpx-sysroot.patch
>
> diff --git a/contrib/src/vpx/libvpx-mac.patch b/contrib/src/vpx/libvpx-mac.patch
> index 9c1033c..b7b6c1d 100644
> --- a/contrib/src/vpx/libvpx-mac.patch
> +++ b/contrib/src/vpx/libvpx-mac.patch
> @@ -8,7 +8,7 @@ diff -ru libvpx/build/make/configure.sh libvpx/build/make/configure.sh
> if [ -d "/Developer/SDKs/MacOSX10.7.sdk" ]; then
> osx_sdk_dir="/Developer/SDKs/MacOSX10.7.sdk"
> fi
> -+ if [ -d "${sdk_path}" ]; then
> ++ if [ -d "${sdk_path}" ] && [[ "${gcctarget}" = darwin* ]]; then
Please use POSIX shell and not bash !
if [ -d "${sdk_path}" -a "{gcctarget}" = darwin ]; then ....
I am sure some shell people will tell you how to match darwin* without
bash :)
> + osx_sdk_dir=${sdk_path}
> + fi
>
> diff --git a/contrib/src/vpx/libvpx-sysroot.patch b/contrib/src/vpx/libvpx-sysroot.patch
> new file mode 100644
> index 0000000..0da738e
> --- /dev/null
> +++ b/contrib/src/vpx/libvpx-sysroot.patch
> @@ -0,0 +1,21 @@
> +diff --git a/build/make/configure.sh b/build/make/configure.sh
> +index d4124c7..c420d25 100755
> +--- a/build/make/configure.sh
> ++++ b/build/make/configure.sh
> +@@ -939,8 +939,11 @@ EOF
> + awk '{ print $1 }' | tail -1`
> + fi
> +
> +- add_cflags "--sysroot=${alt_libc}"
> +- add_ldflags "--sysroot=${alt_libc}"
> ++ # this may happen if toolchain binaries are outside the ndk dir
> ++ if [ "${alt_libc}" ]; then
> ++ add_cflags "--sysroot=${alt_libc}"
> ++ add_ldflags "--sysroot=${alt_libc}"
> ++ fi
> +
> + # linker flag that routes around a CPU bug in some
> + # Cortex-A8 implementations (NDK Dev Guide)
> +--
> +1.8.3.2
I don't understand what that one does, can you explain?
> diff --git a/contrib/src/vpx/rules.mak b/contrib/src/vpx/rules.mak
> index e9b0651..76cd59a 100644
> --- a/contrib/src/vpx/rules.mak
> +++ b/contrib/src/vpx/rules.mak
> @@ -10,6 +10,7 @@ $(TARBALLS)/libvpx-$(VPX_VERSION).tar.bz2:
>
> libvpx: libvpx-$(VPX_VERSION).tar.bz2 .sum-vpx
> $(UNPACK)
> + $(APPLY) $(SRC)/vpx/libvpx-sysroot.patch
> $(APPLY) $(SRC)/vpx/libvpx-no-cross.patch
> $(APPLY) $(SRC)/vpx/libvpx-mac.patch
> $(MOVE)
> @@ -38,7 +39,9 @@ else ifeq ($(ARCH),x86_64)
> VPX_ARCH := x86_64
> endif
>
> -ifdef HAVE_LINUX
> +ifdef HAVE_ANDROID
> +VPX_OS := android
> +else ifdef HAVE_LINUX
> VPX_OS := linux
> else ifdef HAVE_DARWIN_OS
> ifeq ($(ARCH),arm)
> @@ -83,6 +86,11 @@ endif
> ifdef HAVE_IOS
> VPX_CONF += --sdk-path=$(SDKROOT)
> endif
> +ifdef HAVE_ANDROID
> +# vpx configure.sh overrides our sysroot
> +VPX_CONF += --sdk-path=$(shell dirname $(shell which $(HOST)-gcc)) \
Can you explain that one too?
> + --extra-cflags="-I $(ANDROID_NDK)/sources/cpufeatures/"
OK (I guess libvpx depends on that single header there?)
> +endif
>
> .vpx: libvpx
> cd $< && CROSS=$(VPX_CROSS) ./configure --target=$(VPX_TARGET) \
>
More information about the vlc-devel
mailing list