diff --git a/repos/libports/lib/import/import-libyuv.mk b/repos/libports/lib/import/import-libyuv.mk
index f9d25bf712..30442d8f52 100644
--- a/repos/libports/lib/import/import-libyuv.mk
+++ b/repos/libports/lib/import/import-libyuv.mk
@@ -1 +1 @@
-INC_DIR += $(call select_from_ports,libyuv)/libyuv/include
+INC_DIR += $(call select_from_ports,libyuv)/include
diff --git a/repos/libports/lib/mk/libyuv.inc b/repos/libports/lib/mk/libyuv.inc
index 74a33b8b20..03853c8ad4 100644
--- a/repos/libports/lib/mk/libyuv.inc
+++ b/repos/libports/lib/mk/libyuv.inc
@@ -1,8 +1,11 @@
-YUV_DIR = $(call select_from_ports,libyuv)/libyuv
+SHARED_LIB = yes
+
+YUV_PORT = $(call select_from_ports,libyuv)
+YUV_DIR = $(YUV_PORT)/src/lib/libyuv
LIBS = libc stdcxx jpeg
-INC_DIR += $(YUV_DIR)/include
+INC_DIR += $(YUV_PORT)/include
SRC_CC = $(notdir $(wildcard $(YUV_DIR)/source/*.cc))
diff --git a/repos/libports/ports/libyuv.hash b/repos/libports/ports/libyuv.hash
index 6836aab6a8..ff1ba76773 100644
--- a/repos/libports/ports/libyuv.hash
+++ b/repos/libports/ports/libyuv.hash
@@ -1 +1 @@
-55b2eba298081feccdcc7400c309842be9c24f93
+01cdd9be97364d27b8d6aa7aafc18ba0f2eb4c3f
diff --git a/repos/libports/ports/libyuv.port b/repos/libports/ports/libyuv.port
index c7e0b59ce7..ba7e8fdc05 100644
--- a/repos/libports/ports/libyuv.port
+++ b/repos/libports/ports/libyuv.port
@@ -3,8 +3,13 @@ VERSION := git
DOWNLOADS := libyuv.git
URL(libyuv) := https://chromium.googlesource.com/libyuv/libyuv
-DIR(libyuv) := libyuv
+DIR(libyuv) := src/lib/libyuv
REV(libyuv) := 8c8d907d29255ae0630f414e0e09ee9cca8f4bfc
-PATCHES := src/lib/libyuv/constraints.patch
+DIRS := include include/libyuv
+DIR_CONTENT(include) := src/lib/libyuv/include/libyuv.h
+DIR_CONTENT(include/libyuv) := src/lib/libyuv/include/libyuv/*.h
+
+PATCHES := src/lib/libyuv/constraints.patch
+PATCH_OPT := -d src/lib/libyuv -p1
diff --git a/repos/ports/recipes/pkg/vbox5-nova-capture/archives b/repos/ports/recipes/pkg/vbox5-nova-capture/archives
index 361fa39667..c2a0030c5f 100644
--- a/repos/ports/recipes/pkg/vbox5-nova-capture/archives
+++ b/repos/ports/recipes/pkg/vbox5-nova-capture/archives
@@ -5,6 +5,7 @@ _/src/init
_/src/posix
_/src/zlib
_/src/libiconv
+_/src/libyuv
_/src/stdcxx
_/src/vfs
_/src/jpeg
diff --git a/repos/ports/recipes/pkg/vbox5-nova-capture/runtime b/repos/ports/recipes/pkg/vbox5-nova-capture/runtime
index 3ccf39c2dd..8c0b4ba56a 100644
--- a/repos/ports/recipes/pkg/vbox5-nova-capture/runtime
+++ b/repos/ports/recipes/pkg/vbox5-nova-capture/runtime
@@ -26,6 +26,7 @@
+
diff --git a/repos/ports/recipes/pkg/vbox5-nova-sculpt/archives b/repos/ports/recipes/pkg/vbox5-nova-sculpt/archives
index d061f4b182..f7c40c0fef 100755
--- a/repos/ports/recipes/pkg/vbox5-nova-sculpt/archives
+++ b/repos/ports/recipes/pkg/vbox5-nova-sculpt/archives
@@ -6,6 +6,7 @@ _/src/init
_/src/posix
_/src/zlib
_/src/libiconv
+_/src/libyuv
_/src/stdcxx
_/src/vfs
_/src/jpeg
diff --git a/repos/ports/recipes/pkg/vbox5-nova-sculpt/runtime b/repos/ports/recipes/pkg/vbox5-nova-sculpt/runtime
index 675f344348..46e3ad6138 100755
--- a/repos/ports/recipes/pkg/vbox5-nova-sculpt/runtime
+++ b/repos/ports/recipes/pkg/vbox5-nova-sculpt/runtime
@@ -25,6 +25,7 @@
+
diff --git a/repos/ports/recipes/pkg/vbox5/archives b/repos/ports/recipes/pkg/vbox5/archives
index 5dcdbb7638..275e89bc58 100755
--- a/repos/ports/recipes/pkg/vbox5/archives
+++ b/repos/ports/recipes/pkg/vbox5/archives
@@ -4,6 +4,7 @@ _/src/init
_/src/posix
_/src/zlib
_/src/libiconv
+_/src/libyuv
_/src/stdcxx
_/src/vfs
_/src/jpeg
diff --git a/repos/ports/recipes/pkg/vbox5/runtime b/repos/ports/recipes/pkg/vbox5/runtime
index a34f086501..d9ef6dc178 100755
--- a/repos/ports/recipes/pkg/vbox5/runtime
+++ b/repos/ports/recipes/pkg/vbox5/runtime
@@ -80,6 +80,7 @@
+
diff --git a/repos/ports/recipes/src/vbox5-nova/content.mk b/repos/ports/recipes/src/vbox5-nova/content.mk
index 5ea6109401..ccd65f7321 100644
--- a/repos/ports/recipes/src/vbox5-nova/content.mk
+++ b/repos/ports/recipes/src/vbox5-nova/content.mk
@@ -50,10 +50,6 @@ MIRROR_FROM_LIBPORTS := lib/mk/libc-mem.mk \
lib/mk/spec/x86_64/qemu-usb.mk \
include/qemu \
src/lib/qemu-usb \
- lib/import/import-libyuv.mk \
- lib/mk/libyuv.inc \
- lib/mk/spec/x86_32/libyuv.mk \
- lib/mk/spec/x86_64/libyuv.mk
content: $(MIRROR_FROM_LIBPORTS)
@@ -71,16 +67,6 @@ $(MIRROR_FROM_QEMU_USB_PORT_DIR):
mkdir -p $(dir $@)
cp -r $(QEMU_USB_PORT_DIR)/$@ $(dir $@)
-LIBYUV_PORT_DIR := $(call port_dir,$(GENODE_DIR)/repos/libports/ports/libyuv)
-
-MIRROR_FROM_LIBYUV_PORT_DIR := libyuv
-
-content: $(MIRROR_FROM_LIBYUV_PORT_DIR)
-
-$(MIRROR_FROM_LIBYUV_PORT_DIR):
- mkdir -p $(dir $@)
- cp -r $(LIBYUV_PORT_DIR)/$@ $(dir $@)
-
MIRROR_FROM_OS := src/drivers/ps2/scan_code_set_1.h \
include/pointer/shape_report.h \
diff --git a/repos/ports/recipes/src/vbox5-nova/used_apis b/repos/ports/recipes/src/vbox5-nova/used_apis
index aa55202949..b0854b2c43 100644
--- a/repos/ports/recipes/src/vbox5-nova/used_apis
+++ b/repos/ports/recipes/src/vbox5-nova/used_apis
@@ -19,4 +19,4 @@ usb_session
vfs
nitpicker_gfx
blit
-jpeg
+libyuv
diff --git a/repos/ports/recipes/src/vbox5/content.mk b/repos/ports/recipes/src/vbox5/content.mk
index 86dff157b9..4cf6d3a45a 100644
--- a/repos/ports/recipes/src/vbox5/content.mk
+++ b/repos/ports/recipes/src/vbox5/content.mk
@@ -51,10 +51,6 @@ MIRROR_FROM_LIBPORTS := lib/mk/libc-mem.mk \
lib/mk/spec/x86_64/qemu-usb.mk \
include/qemu \
src/lib/qemu-usb \
- lib/import/import-libyuv.mk \
- lib/mk/libyuv.inc \
- lib/mk/spec/x86_32/libyuv.mk \
- lib/mk/spec/x86_64/libyuv.mk
content: $(MIRROR_FROM_LIBPORTS)
@@ -72,16 +68,6 @@ $(MIRROR_FROM_QEMU_USB_PORT_DIR):
mkdir -p $(dir $@)
cp -r $(QEMU_USB_PORT_DIR)/$@ $(dir $@)
-LIBYUV_PORT_DIR := $(call port_dir,$(GENODE_DIR)/repos/libports/ports/libyuv)
-
-MIRROR_FROM_LIBYUV_PORT_DIR := libyuv
-
-content: $(MIRROR_FROM_LIBYUV_PORT_DIR)
-
-$(MIRROR_FROM_LIBYUV_PORT_DIR):
- mkdir -p $(dir $@)
- cp -r $(LIBYUV_PORT_DIR)/$@ $(dir $@)
-
MIRROR_FROM_OS := src/drivers/ps2/scan_code_set_1.h \
include/pointer/shape_report.h \
diff --git a/repos/ports/recipes/src/vbox5/used_apis b/repos/ports/recipes/src/vbox5/used_apis
index 94b1922a2a..aa401b5750 100644
--- a/repos/ports/recipes/src/vbox5/used_apis
+++ b/repos/ports/recipes/src/vbox5/used_apis
@@ -19,4 +19,4 @@ vfs
vm_session
nitpicker_gfx
blit
-jpeg
+libyuv
diff --git a/repos/ports/recipes/src/vbox6/content.mk b/repos/ports/recipes/src/vbox6/content.mk
index 49a759ac03..70ef6ed2f5 100644
--- a/repos/ports/recipes/src/vbox6/content.mk
+++ b/repos/ports/recipes/src/vbox6/content.mk
@@ -31,16 +31,12 @@ src/virtualbox6_sdk:
MIRROR_FROM_LIBPORTS := \
include/qemu \
- lib/import/import-libyuv.mk \
lib/import/import-qemu-usb_include.mk \
lib/mk/libc-common.inc \
lib/mk/libc-mem.mk \
- lib/mk/libyuv.inc \
lib/mk/qemu-usb.inc \
lib/mk/qemu-usb_include.mk \
- lib/mk/spec/x86_32/libyuv.mk \
lib/mk/spec/x86_32/qemu-usb.mk \
- lib/mk/spec/x86_64/libyuv.mk \
lib/mk/spec/x86_64/qemu-usb.mk \
src/lib/libc/internal/init.h \
src/lib/libc/internal/mem_alloc.h \
@@ -69,16 +65,6 @@ $(MIRROR_FROM_QEMU_USB_PORT_DIR):
mkdir -p $(dir $@)
cp -r $(QEMU_USB_PORT_DIR)/$@ $(dir $@)
-LIBYUV_PORT_DIR := $(call port_dir,$(GENODE_DIR)/repos/libports/ports/libyuv)
-
-MIRROR_FROM_LIBYUV_PORT_DIR := libyuv
-
-content: $(MIRROR_FROM_LIBYUV_PORT_DIR)
-
-$(MIRROR_FROM_LIBYUV_PORT_DIR):
- mkdir -p $(dir $@)
- cp -r $(LIBYUV_PORT_DIR)/$@ $(dir $@)
-
MIRROR_FROM_OS := src/drivers/ps2/scan_code_set_1.h \
include/pointer/shape_report.h \
diff --git a/repos/ports/recipes/src/vbox6/used_apis b/repos/ports/recipes/src/vbox6/used_apis
index 987f085144..695710127b 100644
--- a/repos/ports/recipes/src/vbox6/used_apis
+++ b/repos/ports/recipes/src/vbox6/used_apis
@@ -15,4 +15,4 @@ timer_session
usb_session
vfs
vm_session
-jpeg
+libyuv
diff --git a/repos/ports/run/vbox5_genode_usb_hid_raw.run b/repos/ports/run/vbox5_genode_usb_hid_raw.run
index 03f10c756c..77803feaf8 100644
--- a/repos/ports/run/vbox5_genode_usb_hid_raw.run
+++ b/repos/ports/run/vbox5_genode_usb_hid_raw.run
@@ -266,6 +266,7 @@ set boot_modules {
ld.lib.so libc.lib.so libm.lib.so
libiconv.lib.so stdcxx.lib.so
qemu-usb.lib.so
+ libyuv.lib.so jpeg.lib.so
}
append boot_modules " [usb_host_drv_binary] "
diff --git a/repos/ports/run/virtualbox.run b/repos/ports/run/virtualbox.run
index 8cd15801f2..050b969067 100644
--- a/repos/ports/run/virtualbox.run
+++ b/repos/ports/run/virtualbox.run
@@ -295,6 +295,7 @@ lappend_if [expr $use_gui] boot_modules report_rom
append boot_modules {
libiconv.lib.so
qemu-usb.lib.so
+ libyuv.lib.so
}
append_if [expr $use_net] boot_modules { ipxe_nic_drv }
diff --git a/repos/ports/run/virtualbox6.run b/repos/ports/run/virtualbox6.run
index 6441921fc5..6fe48004b8 100644
--- a/repos/ports/run/virtualbox6.run
+++ b/repos/ports/run/virtualbox6.run
@@ -281,7 +281,7 @@ close $fd
set boot_modules {
rtc_drv
virtualbox6 libc.lib.so vfs.lib.so libm.lib.so libiconv.lib.so stdcxx.lib.so
- qemu-usb.lib.so
+ qemu-usb.lib.so libyuv.lib.so jpeg.lib.so
fb_drv.config test.iso virtualbox6.vbox
}
diff --git a/repos/ports/run/virtualbox_auto.inc b/repos/ports/run/virtualbox_auto.inc
index 6d92ef7881..f4882f09b5 100644
--- a/repos/ports/run/virtualbox_auto.inc
+++ b/repos/ports/run/virtualbox_auto.inc
@@ -405,6 +405,7 @@ install_config $config
append boot_modules {
ahci_drv
qemu-usb.lib.so
+ libyuv.lib.so
}
lappend_if [expr $use_serial] boot_modules log_terminal