diff mbox

[2/8] Add libvpx

Message ID 1407352737-7959-2-git-send-email-diorcet.yann@gmail.com
State Rejected
Delegated to: Christian Sørensen
Headers show

Commit Message

Yann Diorcet Aug. 6, 2014, 7:18 p.m. UTC
---
 .../0001-enable-shared-on.mingw32.patch            | 130 +++++++++++++++++++++
 recipes/libvpx/libvpx-1.3.0/02_osx.patch           |  44 +++++++
 recipes/libvpx/libvpx-1.3.0/enable_shared.patch    |  23 ++++
 recipes/libvpx/libvpx.inc                          |  34 ++++++
 recipes/libvpx/libvpx_1.3.0.oe                     |   5 +
 recipes/libvpx/libvpx_1.3.0.oe.sig                 |   1 +
 6 files changed, 237 insertions(+)
 create mode 100644 recipes/libvpx/libvpx-1.3.0/0001-enable-shared-on.mingw32.patch
 create mode 100644 recipes/libvpx/libvpx-1.3.0/02_osx.patch
 create mode 100644 recipes/libvpx/libvpx-1.3.0/enable_shared.patch
 create mode 100644 recipes/libvpx/libvpx.inc
 create mode 100644 recipes/libvpx/libvpx_1.3.0.oe
 create mode 100644 recipes/libvpx/libvpx_1.3.0.oe.sig

Comments

christian.braunersorensen@prevas.dk Aug. 19, 2014, 7:59 a.m. UTC | #1
Hi Yann

On 2014-08-06 21:18, Yann Diorcet wrote:
> ---
>   .../0001-enable-shared-on.mingw32.patch            | 130 +++++++++++++++++++++
>   recipes/libvpx/libvpx-1.3.0/02_osx.patch           |  44 +++++++
>   recipes/libvpx/libvpx-1.3.0/enable_shared.patch    |  23 ++++
>   recipes/libvpx/libvpx.inc                          |  34 ++++++
>   recipes/libvpx/libvpx_1.3.0.oe                     |   5 +
>   recipes/libvpx/libvpx_1.3.0.oe.sig                 |   1 +
>   6 files changed, 237 insertions(+)
>   create mode 100644 recipes/libvpx/libvpx-1.3.0/0001-enable-shared-on.mingw32.patch
>   create mode 100644 recipes/libvpx/libvpx-1.3.0/02_osx.patch
>   create mode 100644 recipes/libvpx/libvpx-1.3.0/enable_shared.patch
>   create mode 100644 recipes/libvpx/libvpx.inc
>   create mode 100644 recipes/libvpx/libvpx_1.3.0.oe
>   create mode 100644 recipes/libvpx/libvpx_1.3.0.oe.sig
>
> diff --git a/recipes/libvpx/libvpx-1.3.0/0001-enable-shared-on.mingw32.patch b/recipes/libvpx/libvpx-1.3.0/0001-enable-shared-on.mingw32.patch
> new file mode 100644
> index 0000000..2981907
> --- /dev/null
> +++ b/recipes/libvpx/libvpx-1.3.0/0001-enable-shared-on.mingw32.patch
> @@ -0,0 +1,130 @@
> +diff --git a/build/make/Makefile b/build/make/Makefile
> +index 030c1b5..1ef1056 100644
> +--- a/build/make/Makefile
> ++++ b/build/make/Makefile
> +@@ -268,7 +268,7 @@ define so_template
> + $(1):
> + 	$(if $(quiet),@echo "    [LD] $$@")
> + 	$(qexec)$$(LD) -shared $$(LDFLAGS) \
> +-            -Wl,--no-undefined -Wl,-soname,$$(SONAME) \
> ++            -Wl,--no-undefined -Wl,--out-implib,libvpx.dll.a \
> +             -Wl,--version-script,$$(EXPORTS_FILE) -o $$@ \
> +             $$(filter %.o,$$^) $$(extralibs)
> + endef
> +@@ -351,7 +351,7 @@ LIBS=$(call enabled,LIBS)
> + .libs: $(LIBS)
> + 	@touch $@
> + $(foreach lib,$(filter %_g.a,$(LIBS)),$(eval $(call archive_template,$(lib))))
> +-$(foreach lib,$(filter %so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH),$(LIBS)),$(eval $(call so_template,$(lib))))
> ++$(foreach lib,$(filter %-$(VERSION_MAJOR).dll,$(LIBS)),$(eval $(call so_template,$(lib))))
> + $(foreach lib,$(filter %$(VERSION_MAJOR).dylib,$(LIBS)),$(eval $(call dl_template,$(lib))))
> +
> + INSTALL-LIBS=$(call cond_enabled,CONFIG_INSTALL_LIBS,INSTALL-LIBS)
> +diff --git a/build/make/configure.sh b/build/make/configure.sh
> +index 8dcb9bb..27f735b 100755
> +--- a/build/make/configure.sh
> ++++ b/build/make/configure.sh
> +@@ -542,11 +542,14 @@ process_common_cmdline() {
> +         --libdir=*)
> +         libdir="${optval}"
> +         ;;
> ++        --bindir=*)
> ++        bindir="${optval}"
> ++        ;;
> +         --sdk-path=*)
> +         [ -d "${optval}" ] || die "Not a directory: ${optval}"
> +         sdk_path="${optval}"
> +         ;;
> +-        --libc|--as|--prefix|--libdir|--sdk-path)
> ++        --libc|--as|--prefix|--libdir|--bindir|--sdk-path)
> +         die "Option ${opt} requires argument"
> +         ;;
> +         --help|-h) show_help
> +@@ -573,9 +576,14 @@ post_process_common_cmdline() {
> +     prefix="${prefix%/}"
> +     libdir="${libdir:-${prefix}/lib}"
> +     libdir="${libdir%/}"
> ++    bindir="${bindir:-${prefix}/bin}"
> ++    bindir="${bindir%/}"
> +     if [ "${libdir#${prefix}}" = "${libdir}" ]; then
> +         die "Libdir ${libdir} must be a subdirectory of ${prefix}"
> +     fi
> ++    if [ "${bindir#${prefix}}" = "${bindir}" ]; then
> ++        die "Bindir ${bindir} must be a subdirectory of ${prefix}"
> ++    fi
> + }
> +
> +
> +diff --git a/configure b/configure
> +index 4ff3fc7..b3b4d72 100755
> +--- a/configure
> ++++ b/configure
> +@@ -474,6 +474,7 @@ else
> + DIST_DIR?=\$(DESTDIR)${prefix}
> + endif
> + LIBSUBDIR=${libdir##${prefix}/}
> ++BINSUBDIR=${bindir##${prefix}/}
> +
> + VERSION_STRING=${VERSION_STRING}
> +
> +diff --git a/libs.mk b/libs.mk
> +index 4062833..0a1cfcd 100644
> +--- a/libs.mk
> ++++ b/libs.mk
> +@@ -162,6 +162,7 @@ endif
> + INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx/%
> + INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx_ports/%
> + INSTALL_MAPS += $(LIBSUBDIR)/%     %
> ++INSTALL_MAPS += $(BINSUBDIR)/%     %
> + INSTALL_MAPS += src/%     $(SRC_PATH_BARE)/%
> + ifeq ($(CONFIG_MSVS),yes)
> + INSTALL_MAPS += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/%  $(p)/Release/%)
> +@@ -271,19 +272,19 @@ EXPORT_FILE             := libvpx.syms
> + LIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
> +                              libvpx.dylib  )
> + else
> +-LIBVPX_SO               := libvpx.so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
> ++LIBVPX_SO               := libvpx-$(VERSION_MAJOR).dll
This does not look good..
> + EXPORT_FILE             := libvpx.ver
> + SYM_LINK                := libvpx.so
> +-LIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
> +-                             libvpx.so libvpx.so.$(VERSION_MAJOR) \
> +-                             libvpx.so.$(VERSION_MAJOR).$(VERSION_MINOR))
> ++LIBVPX_SO_SYMLINKS      := $(addprefix $(BINSUBDIR)/, \
> ++                           libvpx-$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH).dll \
> ++                           libvpx-$(VERSION_MAJOR).$(VERSION_MINOR).dll)
> + endif
> +
> + LIBS-$(BUILD_LIBVPX_SO) += $(BUILD_PFX)$(LIBVPX_SO)\
> +                            $(notdir $(LIBVPX_SO_SYMLINKS))
> + $(BUILD_PFX)$(LIBVPX_SO): $(LIBVPX_OBJS) $(EXPORT_FILE)
> + $(BUILD_PFX)$(LIBVPX_SO): extralibs += -lm
> +-$(BUILD_PFX)$(LIBVPX_SO): SONAME = libvpx.so.$(VERSION_MAJOR)
> ++$(BUILD_PFX)$(LIBVPX_SO): SONAME = libvpx-$(VERSION_MAJOR).dll
> + $(BUILD_PFX)$(LIBVPX_SO): EXPORTS_FILE = $(EXPORT_FILE)
> +
> + libvpx.ver: $(call enabled,CODEC_EXPORTS)
> +@@ -314,7 +315,7 @@ $(eval $(call libvpx_symlink_template,\
> +
> +
> + INSTALL-LIBS-$(BUILD_LIBVPX_SO) += $(LIBVPX_SO_SYMLINKS)
> +-INSTALL-LIBS-$(BUILD_LIBVPX_SO) += $(LIBSUBDIR)/$(LIBVPX_SO)
> ++INSTALL-LIBS-$(BUILD_LIBVPX_SO) += $(BINSUBDIR)/$(LIBVPX_SO)
> +
> +
> + LIBS-$(BUILD_LIBVPX) += vpx.pc
> +diff --git a/vp8/common/generic/systemdependent.c b/vp8/common/generic/systemdependent.c
> +index d84df33..b606309 100644
> +--- a/vp8/common/generic/systemdependent.c
> ++++ b/vp8/common/generic/systemdependent.c
> +@@ -18,6 +18,10 @@
> + #endif
> + #include "vp8/common/onyxc_int.h"
> +
> ++#if defined(_WIN32)
> ++#undef HAVE_UNISTD_H
> ++#endif
> ++
> + #if CONFIG_MULTITHREAD
> + #if HAVE_UNISTD_H && !defined(__OS2__)
> + #include <unistd.h>
> diff --git a/recipes/libvpx/libvpx-1.3.0/02_osx.patch b/recipes/libvpx/libvpx-1.3.0/02_osx.patch
> new file mode 100644
> index 0000000..b08afe0
> --- /dev/null
> +++ b/recipes/libvpx/libvpx-1.3.0/02_osx.patch
> @@ -0,0 +1,44 @@
> +diff --git a/build/make/Makefile b/build/make/Makefile
> +index 030c1b5..4405c0c 100644
> +--- a/build/make/Makefile
> ++++ b/build/make/Makefile
> +@@ -72,7 +72,7 @@ ASFLAGS+=-I$(BUILD_PFX)$(BUILD_ROOT)/ -I$(SRC_PATH)/
> + DIST_DIR?=dist
> + HOSTCC?=gcc
> + TGT_ISA:=$(word 1, $(subst -, ,$(TOOLCHAIN)))
> +-TGT_OS:=$(word 2, $(subst -, ,$(TOOLCHAIN)))
> ++TGT_OS:=darwin11
> + TGT_CC:=$(word 3, $(subst -, ,$(TOOLCHAIN)))
> + quiet:=$(if $(or $(verbose), $(V)),, yes)
> + qexec=$(if $(quiet),@)
> +@@ -281,7 +281,8 @@ $(1):
> + 	$(if $(quiet),@echo "    [LD] $$@")
> + 	$(qexec)$$(LD) -dynamiclib $$(LDFLAGS) \
> + 	    -exported_symbols_list $$(EXPORTS_FILE) \
> +-        -Wl,-headerpad_max_install_names,-compatibility_version,1.0,-current_version,$$(VERSION_MAJOR) \
> ++        -Wl,-install_name,$(PREFIX)/$(LIBSUBDIR)/$$(LIBVPX_SO) -Wl,-current_version,$(VERSION_MAJOR).$(VERSION_MINOR) \
> ++        -Wl,-compatibility_version,$(VERSION_MAJOR) -o $$@ \
> +         -o $$@ \
> +         $$(filter %.o,$$^) $$(extralibs)
> + endef
> +diff --git a/vp9/exports_enc b/vp9/exports_enc
> +index 25156e8..2a0fef3 100644
> +--- a/vp9/exports_enc
> ++++ b/vp9/exports_enc
> +@@ -1,4 +1,2 @@
> + data vpx_codec_vp9_cx_algo
> + text vpx_codec_vp9_cx
> +-data vpx_codec_vp9x_cx_algo
> +-text vpx_codec_vp9x_cx
> +diff --git a/vpx/exports_enc b/vpx/exports_enc
> +index 1d9340c..9e73dfb 100644
> +--- a/vpx/exports_enc
> ++++ b/vpx/exports_enc
> +@@ -8,7 +8,6 @@ text vpx_codec_get_preview_frame
> + text vpx_codec_set_cx_data_buf
> + text vpx_svc_dump_statistics
> + text vpx_svc_encode
> +-text vpx_svc_free
> + text vpx_svc_get_buffer
> + text vpx_svc_get_encode_frame_count
> + text vpx_svc_get_frame_size
> diff --git a/recipes/libvpx/libvpx-1.3.0/enable_shared.patch b/recipes/libvpx/libvpx-1.3.0/enable_shared.patch
> new file mode 100644
> index 0000000..538552b
> --- /dev/null
> +++ b/recipes/libvpx/libvpx-1.3.0/enable_shared.patch
> @@ -0,0 +1,23 @@
> +diff --git a/configure b/configure
> +index 4ff3fc7..498e75e 100755
> +--- a/configure
> ++++ b/configure
> +@@ -501,18 +519,6 @@ EOF
> + }
> +
> + process_detect() {
> +-    if enabled shared; then
> +-        # Can only build shared libs on a subset of platforms. Doing this check
> +-        # here rather than at option parse time because the target auto-detect
> +-        # magic happens after the command line has been parsed.
> +-        if ! enabled linux; then
> +-            if enabled gnu; then
> +-                echo "--enable-shared is only supported on ELF; assuming this is OK"
> +-            else
> +-                die "--enable-shared only supported on ELF for now"
> +-            fi
> +-        fi
> +-    fi
> +     if [ -z "$CC" ] || enabled external_build; then
> +         echo "Bypassing toolchain for environment detection."
> +         enable_feature external_build
Maybe consider extending the check instead of just removing it.
> diff --git a/recipes/libvpx/libvpx.inc b/recipes/libvpx/libvpx.inc
> new file mode 100644
> index 0000000..6d9f3e8
> --- /dev/null
> +++ b/recipes/libvpx/libvpx.inc
> @@ -0,0 +1,34 @@
> +DESCRIPTION = "vpx Multi-Format Codec SDK"
> +LICENSE = "BSD"
> +
> +RECIPE_TYPES = "machine native"
> +
> +DEPENDS = "libm"
> +DEPENDS:>TARGET_OS_linux-gnu = " libpthread"
> +
> +PARALLEL_MAKE = ""
> +
> +inherit autotools library pkgconfig library
This is not autotools based. inherit make instead
> +
> +SRC_URI = "git://git.chromium.org/webm/libvpx.git;tag=v${PV};protocol=http"
> +S = "${SRCDIR}/libvpx"
> +
> +export LD = "${CC}"
> +
> +EXTRA_OEMAKE += "V=1"
> +
> +autotools_configure () {
> +    if [ -x "${CONFIGURE_SCRIPT}" ] ; then
> +        ${CONFIGURE_SCRIPT} \
> +               --prefix=${prefix} \
> +               --target=generic-gnu \
> +               --enable-vp8 \
> +               --enable-libs \
> +               --disable-install-docs \
> +               --disable-debug-libs \
> +               --disable-examples \
> +               --disable-unit-tests
> +    else
> +        oefatal "no configure script found"
> +    fi
> +}
Why overwrite the autotools_configure? It should be enough just to 
append to EXTRA_OECONF?
> diff --git a/recipes/libvpx/libvpx_1.3.0.oe b/recipes/libvpx/libvpx_1.3.0.oe
> new file mode 100644
> index 0000000..57d5dc9
> --- /dev/null
> +++ b/recipes/libvpx/libvpx_1.3.0.oe
> @@ -0,0 +1,5 @@
> +require libvpx.inc
> +
> +SRC_URI += "file://enable_shared.patch"
> +SRC_URI:>TARGET_OS_darwin = " file://02_osx.patch"
> +SRC_URI:>TARGET_OS_mingw32 = " file://0001-enable-shared-on.mingw32.patch"
> diff --git a/recipes/libvpx/libvpx_1.3.0.oe.sig b/recipes/libvpx/libvpx_1.3.0.oe.sig
> new file mode 100644
> index 0000000..f87d77f
> --- /dev/null
> +++ b/recipes/libvpx/libvpx_1.3.0.oe.sig
> @@ -0,0 +1 @@
> +2e88f2f2ec777259bda1714e72f1ecd2519bceb5  git://git.chromium.org/webm/libvpx.git;protocol=http;tag=v1.3.0
/Christian
diff mbox

Patch

diff --git a/recipes/libvpx/libvpx-1.3.0/0001-enable-shared-on.mingw32.patch b/recipes/libvpx/libvpx-1.3.0/0001-enable-shared-on.mingw32.patch
new file mode 100644
index 0000000..2981907
--- /dev/null
+++ b/recipes/libvpx/libvpx-1.3.0/0001-enable-shared-on.mingw32.patch
@@ -0,0 +1,130 @@ 
+diff --git a/build/make/Makefile b/build/make/Makefile
+index 030c1b5..1ef1056 100644
+--- a/build/make/Makefile
++++ b/build/make/Makefile
+@@ -268,7 +268,7 @@ define so_template
+ $(1):
+ 	$(if $(quiet),@echo "    [LD] $$@")
+ 	$(qexec)$$(LD) -shared $$(LDFLAGS) \
+-            -Wl,--no-undefined -Wl,-soname,$$(SONAME) \
++            -Wl,--no-undefined -Wl,--out-implib,libvpx.dll.a \
+             -Wl,--version-script,$$(EXPORTS_FILE) -o $$@ \
+             $$(filter %.o,$$^) $$(extralibs)
+ endef
+@@ -351,7 +351,7 @@ LIBS=$(call enabled,LIBS)
+ .libs: $(LIBS)
+ 	@touch $@
+ $(foreach lib,$(filter %_g.a,$(LIBS)),$(eval $(call archive_template,$(lib))))
+-$(foreach lib,$(filter %so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH),$(LIBS)),$(eval $(call so_template,$(lib))))
++$(foreach lib,$(filter %-$(VERSION_MAJOR).dll,$(LIBS)),$(eval $(call so_template,$(lib))))
+ $(foreach lib,$(filter %$(VERSION_MAJOR).dylib,$(LIBS)),$(eval $(call dl_template,$(lib))))
+ 
+ INSTALL-LIBS=$(call cond_enabled,CONFIG_INSTALL_LIBS,INSTALL-LIBS)
+diff --git a/build/make/configure.sh b/build/make/configure.sh
+index 8dcb9bb..27f735b 100755
+--- a/build/make/configure.sh
++++ b/build/make/configure.sh
+@@ -542,11 +542,14 @@ process_common_cmdline() {
+         --libdir=*)
+         libdir="${optval}"
+         ;;
++        --bindir=*)
++        bindir="${optval}"
++        ;;
+         --sdk-path=*)
+         [ -d "${optval}" ] || die "Not a directory: ${optval}"
+         sdk_path="${optval}"
+         ;;
+-        --libc|--as|--prefix|--libdir|--sdk-path)
++        --libc|--as|--prefix|--libdir|--bindir|--sdk-path)
+         die "Option ${opt} requires argument"
+         ;;
+         --help|-h) show_help
+@@ -573,9 +576,14 @@ post_process_common_cmdline() {
+     prefix="${prefix%/}"
+     libdir="${libdir:-${prefix}/lib}"
+     libdir="${libdir%/}"
++    bindir="${bindir:-${prefix}/bin}"
++    bindir="${bindir%/}"
+     if [ "${libdir#${prefix}}" = "${libdir}" ]; then
+         die "Libdir ${libdir} must be a subdirectory of ${prefix}"
+     fi
++    if [ "${bindir#${prefix}}" = "${bindir}" ]; then
++        die "Bindir ${bindir} must be a subdirectory of ${prefix}"
++    fi
+ }
+ 
+ 
+diff --git a/configure b/configure
+index 4ff3fc7..b3b4d72 100755
+--- a/configure
++++ b/configure
+@@ -474,6 +474,7 @@ else
+ DIST_DIR?=\$(DESTDIR)${prefix}
+ endif
+ LIBSUBDIR=${libdir##${prefix}/}
++BINSUBDIR=${bindir##${prefix}/}
+ 
+ VERSION_STRING=${VERSION_STRING}
+ 
+diff --git a/libs.mk b/libs.mk
+index 4062833..0a1cfcd 100644
+--- a/libs.mk
++++ b/libs.mk
+@@ -162,6 +162,7 @@ endif
+ INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx/%
+ INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx_ports/%
+ INSTALL_MAPS += $(LIBSUBDIR)/%     %
++INSTALL_MAPS += $(BINSUBDIR)/%     %
+ INSTALL_MAPS += src/%     $(SRC_PATH_BARE)/%
+ ifeq ($(CONFIG_MSVS),yes)
+ INSTALL_MAPS += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/%  $(p)/Release/%)
+@@ -271,19 +272,19 @@ EXPORT_FILE             := libvpx.syms
+ LIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
+                              libvpx.dylib  )
+ else
+-LIBVPX_SO               := libvpx.so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
++LIBVPX_SO               := libvpx-$(VERSION_MAJOR).dll
+ EXPORT_FILE             := libvpx.ver
+ SYM_LINK                := libvpx.so
+-LIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
+-                             libvpx.so libvpx.so.$(VERSION_MAJOR) \
+-                             libvpx.so.$(VERSION_MAJOR).$(VERSION_MINOR))
++LIBVPX_SO_SYMLINKS      := $(addprefix $(BINSUBDIR)/, \
++                           libvpx-$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH).dll \
++                           libvpx-$(VERSION_MAJOR).$(VERSION_MINOR).dll)
+ endif
+ 
+ LIBS-$(BUILD_LIBVPX_SO) += $(BUILD_PFX)$(LIBVPX_SO)\
+                            $(notdir $(LIBVPX_SO_SYMLINKS))
+ $(BUILD_PFX)$(LIBVPX_SO): $(LIBVPX_OBJS) $(EXPORT_FILE)
+ $(BUILD_PFX)$(LIBVPX_SO): extralibs += -lm
+-$(BUILD_PFX)$(LIBVPX_SO): SONAME = libvpx.so.$(VERSION_MAJOR)
++$(BUILD_PFX)$(LIBVPX_SO): SONAME = libvpx-$(VERSION_MAJOR).dll
+ $(BUILD_PFX)$(LIBVPX_SO): EXPORTS_FILE = $(EXPORT_FILE)
+ 
+ libvpx.ver: $(call enabled,CODEC_EXPORTS)
+@@ -314,7 +315,7 @@ $(eval $(call libvpx_symlink_template,\
+ 
+ 
+ INSTALL-LIBS-$(BUILD_LIBVPX_SO) += $(LIBVPX_SO_SYMLINKS)
+-INSTALL-LIBS-$(BUILD_LIBVPX_SO) += $(LIBSUBDIR)/$(LIBVPX_SO)
++INSTALL-LIBS-$(BUILD_LIBVPX_SO) += $(BINSUBDIR)/$(LIBVPX_SO)
+ 
+ 
+ LIBS-$(BUILD_LIBVPX) += vpx.pc
+diff --git a/vp8/common/generic/systemdependent.c b/vp8/common/generic/systemdependent.c
+index d84df33..b606309 100644
+--- a/vp8/common/generic/systemdependent.c
++++ b/vp8/common/generic/systemdependent.c
+@@ -18,6 +18,10 @@
+ #endif
+ #include "vp8/common/onyxc_int.h"
+ 
++#if defined(_WIN32)
++#undef HAVE_UNISTD_H
++#endif
++
+ #if CONFIG_MULTITHREAD
+ #if HAVE_UNISTD_H && !defined(__OS2__)
+ #include <unistd.h>
diff --git a/recipes/libvpx/libvpx-1.3.0/02_osx.patch b/recipes/libvpx/libvpx-1.3.0/02_osx.patch
new file mode 100644
index 0000000..b08afe0
--- /dev/null
+++ b/recipes/libvpx/libvpx-1.3.0/02_osx.patch
@@ -0,0 +1,44 @@ 
+diff --git a/build/make/Makefile b/build/make/Makefile
+index 030c1b5..4405c0c 100644
+--- a/build/make/Makefile
++++ b/build/make/Makefile
+@@ -72,7 +72,7 @@ ASFLAGS+=-I$(BUILD_PFX)$(BUILD_ROOT)/ -I$(SRC_PATH)/
+ DIST_DIR?=dist
+ HOSTCC?=gcc
+ TGT_ISA:=$(word 1, $(subst -, ,$(TOOLCHAIN)))
+-TGT_OS:=$(word 2, $(subst -, ,$(TOOLCHAIN)))
++TGT_OS:=darwin11
+ TGT_CC:=$(word 3, $(subst -, ,$(TOOLCHAIN)))
+ quiet:=$(if $(or $(verbose), $(V)),, yes)
+ qexec=$(if $(quiet),@)
+@@ -281,7 +281,8 @@ $(1):
+ 	$(if $(quiet),@echo "    [LD] $$@")
+ 	$(qexec)$$(LD) -dynamiclib $$(LDFLAGS) \
+ 	    -exported_symbols_list $$(EXPORTS_FILE) \
+-        -Wl,-headerpad_max_install_names,-compatibility_version,1.0,-current_version,$$(VERSION_MAJOR) \
++        -Wl,-install_name,$(PREFIX)/$(LIBSUBDIR)/$$(LIBVPX_SO) -Wl,-current_version,$(VERSION_MAJOR).$(VERSION_MINOR) \
++        -Wl,-compatibility_version,$(VERSION_MAJOR) -o $$@ \
+         -o $$@ \
+         $$(filter %.o,$$^) $$(extralibs)
+ endef
+diff --git a/vp9/exports_enc b/vp9/exports_enc
+index 25156e8..2a0fef3 100644
+--- a/vp9/exports_enc
++++ b/vp9/exports_enc
+@@ -1,4 +1,2 @@
+ data vpx_codec_vp9_cx_algo
+ text vpx_codec_vp9_cx
+-data vpx_codec_vp9x_cx_algo
+-text vpx_codec_vp9x_cx
+diff --git a/vpx/exports_enc b/vpx/exports_enc
+index 1d9340c..9e73dfb 100644
+--- a/vpx/exports_enc
++++ b/vpx/exports_enc
+@@ -8,7 +8,6 @@ text vpx_codec_get_preview_frame
+ text vpx_codec_set_cx_data_buf
+ text vpx_svc_dump_statistics
+ text vpx_svc_encode
+-text vpx_svc_free
+ text vpx_svc_get_buffer
+ text vpx_svc_get_encode_frame_count
+ text vpx_svc_get_frame_size
diff --git a/recipes/libvpx/libvpx-1.3.0/enable_shared.patch b/recipes/libvpx/libvpx-1.3.0/enable_shared.patch
new file mode 100644
index 0000000..538552b
--- /dev/null
+++ b/recipes/libvpx/libvpx-1.3.0/enable_shared.patch
@@ -0,0 +1,23 @@ 
+diff --git a/configure b/configure
+index 4ff3fc7..498e75e 100755
+--- a/configure
++++ b/configure
+@@ -501,18 +519,6 @@ EOF
+ }
+ 
+ process_detect() {
+-    if enabled shared; then
+-        # Can only build shared libs on a subset of platforms. Doing this check
+-        # here rather than at option parse time because the target auto-detect
+-        # magic happens after the command line has been parsed.
+-        if ! enabled linux; then
+-            if enabled gnu; then
+-                echo "--enable-shared is only supported on ELF; assuming this is OK"
+-            else
+-                die "--enable-shared only supported on ELF for now"
+-            fi
+-        fi
+-    fi
+     if [ -z "$CC" ] || enabled external_build; then
+         echo "Bypassing toolchain for environment detection."
+         enable_feature external_build
diff --git a/recipes/libvpx/libvpx.inc b/recipes/libvpx/libvpx.inc
new file mode 100644
index 0000000..6d9f3e8
--- /dev/null
+++ b/recipes/libvpx/libvpx.inc
@@ -0,0 +1,34 @@ 
+DESCRIPTION = "vpx Multi-Format Codec SDK"
+LICENSE = "BSD"
+
+RECIPE_TYPES = "machine native"
+
+DEPENDS = "libm"
+DEPENDS:>TARGET_OS_linux-gnu = " libpthread"
+
+PARALLEL_MAKE = ""
+
+inherit autotools library pkgconfig library
+
+SRC_URI = "git://git.chromium.org/webm/libvpx.git;tag=v${PV};protocol=http"
+S = "${SRCDIR}/libvpx"
+
+export LD = "${CC}"
+
+EXTRA_OEMAKE += "V=1"
+
+autotools_configure () {
+    if [ -x "${CONFIGURE_SCRIPT}" ] ; then
+        ${CONFIGURE_SCRIPT} \
+               --prefix=${prefix} \
+               --target=generic-gnu \
+               --enable-vp8 \
+               --enable-libs \
+               --disable-install-docs \
+               --disable-debug-libs \
+               --disable-examples \
+               --disable-unit-tests
+    else
+        oefatal "no configure script found"
+    fi
+}
diff --git a/recipes/libvpx/libvpx_1.3.0.oe b/recipes/libvpx/libvpx_1.3.0.oe
new file mode 100644
index 0000000..57d5dc9
--- /dev/null
+++ b/recipes/libvpx/libvpx_1.3.0.oe
@@ -0,0 +1,5 @@ 
+require libvpx.inc
+
+SRC_URI += "file://enable_shared.patch"
+SRC_URI:>TARGET_OS_darwin = " file://02_osx.patch"
+SRC_URI:>TARGET_OS_mingw32 = " file://0001-enable-shared-on.mingw32.patch"
diff --git a/recipes/libvpx/libvpx_1.3.0.oe.sig b/recipes/libvpx/libvpx_1.3.0.oe.sig
new file mode 100644
index 0000000..f87d77f
--- /dev/null
+++ b/recipes/libvpx/libvpx_1.3.0.oe.sig
@@ -0,0 +1 @@ 
+2e88f2f2ec777259bda1714e72f1ecd2519bceb5  git://git.chromium.org/webm/libvpx.git;protocol=http;tag=v1.3.0