From 7b90f8f857670b01a07962938bf735f8561b6ead Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Thu, 22 Apr 2021 14:45:12 +0200 Subject: [PATCH] libports: add libyuv support Issue #4078 --- repos/libports/lib/import/import-libyuv.mk | 1 + repos/libports/lib/mk/libyuv.inc | 12 ++++++++++ repos/libports/lib/mk/spec/x86_32/libyuv.mk | 1 + repos/libports/lib/mk/spec/x86_64/libyuv.mk | 1 + repos/libports/ports/libyuv.hash | 1 + repos/libports/ports/libyuv.port | 10 +++++++++ .../libports/src/lib/libyuv/constraints.patch | 22 +++++++++++++++++++ 7 files changed, 48 insertions(+) create mode 100644 repos/libports/lib/import/import-libyuv.mk create mode 100644 repos/libports/lib/mk/libyuv.inc create mode 100644 repos/libports/lib/mk/spec/x86_32/libyuv.mk create mode 100644 repos/libports/lib/mk/spec/x86_64/libyuv.mk create mode 100644 repos/libports/ports/libyuv.hash create mode 100644 repos/libports/ports/libyuv.port create mode 100644 repos/libports/src/lib/libyuv/constraints.patch diff --git a/repos/libports/lib/import/import-libyuv.mk b/repos/libports/lib/import/import-libyuv.mk new file mode 100644 index 0000000000..f9d25bf712 --- /dev/null +++ b/repos/libports/lib/import/import-libyuv.mk @@ -0,0 +1 @@ +INC_DIR += $(call select_from_ports,libyuv)/libyuv/include diff --git a/repos/libports/lib/mk/libyuv.inc b/repos/libports/lib/mk/libyuv.inc new file mode 100644 index 0000000000..0f807a0ebc --- /dev/null +++ b/repos/libports/lib/mk/libyuv.inc @@ -0,0 +1,12 @@ +YUV_DIR = $(call select_from_ports,libyuv)/libyuv + +LIBS = libc + +INC_DIR += $(YUV_DIR)/include + +SRC_CC = $(notdir $(wildcard $(YUV_DIR)/source/*.cc)) + +CC_CXX_WARN_STRICT = -Wextra -Werror +CC_OPT += -Wno-unused-parameter + +vpath %.cc $(YUV_DIR)/source diff --git a/repos/libports/lib/mk/spec/x86_32/libyuv.mk b/repos/libports/lib/mk/spec/x86_32/libyuv.mk new file mode 100644 index 0000000000..cab5db5dd4 --- /dev/null +++ b/repos/libports/lib/mk/spec/x86_32/libyuv.mk @@ -0,0 +1 @@ +include $(REP_DIR)/lib/mk/libyuv.inc diff --git a/repos/libports/lib/mk/spec/x86_64/libyuv.mk b/repos/libports/lib/mk/spec/x86_64/libyuv.mk new file mode 100644 index 0000000000..cab5db5dd4 --- /dev/null +++ b/repos/libports/lib/mk/spec/x86_64/libyuv.mk @@ -0,0 +1 @@ +include $(REP_DIR)/lib/mk/libyuv.inc diff --git a/repos/libports/ports/libyuv.hash b/repos/libports/ports/libyuv.hash new file mode 100644 index 0000000000..6836aab6a8 --- /dev/null +++ b/repos/libports/ports/libyuv.hash @@ -0,0 +1 @@ +55b2eba298081feccdcc7400c309842be9c24f93 diff --git a/repos/libports/ports/libyuv.port b/repos/libports/ports/libyuv.port new file mode 100644 index 0000000000..c7e0b59ce7 --- /dev/null +++ b/repos/libports/ports/libyuv.port @@ -0,0 +1,10 @@ +LICENSE := BSD-3-Clause +VERSION := git +DOWNLOADS := libyuv.git + +URL(libyuv) := https://chromium.googlesource.com/libyuv/libyuv +DIR(libyuv) := libyuv +REV(libyuv) := 8c8d907d29255ae0630f414e0e09ee9cca8f4bfc + +PATCHES := src/lib/libyuv/constraints.patch + diff --git a/repos/libports/src/lib/libyuv/constraints.patch b/repos/libports/src/lib/libyuv/constraints.patch new file mode 100644 index 0000000000..58a03c251c --- /dev/null +++ b/repos/libports/src/lib/libyuv/constraints.patch @@ -0,0 +1,22 @@ +Fixes "-O0" or "-O2 -fno-omit-frame-pointer" compiles because of +insufficient number of freely available registers. + ++++ libyuv/source/row_gcc.cc +@@ -5116,7 +5116,7 @@ void SplitRGBRow_SSSE3(const uint8_t* src_rgb, + "+r"(dst_r), // %1 + "+r"(dst_g), // %2 + "+r"(dst_b), // %3 +- "+r"(width) // %4 ++ "+rm"(width) // %4 + : "m"(kShuffleMaskRGBToR0), // %5 + "m"(kShuffleMaskRGBToR1), // %6 + "m"(kShuffleMaskRGBToR2), // %7 +@@ -5212,7 +5212,7 @@ void MergeRGBRow_SSSE3(const uint8_t* src_r, + "+r"(src_g), // %1 + "+r"(src_b), // %2 + "+r"(dst_rgb), // %3 +- "+r"(width) // %4 ++ "+rm"(width) // %4 + : "m"(kShuffleMaskRToRGB0), // %5 + "m"(kShuffleMaskGToRGB0), // %6 + "m"(kShuffleMaskBToRGB0), // %7