aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2022-12-30 08:55:14 +0000
committerPo-Chuan Hsieh <sunpoet@FreeBSD.org>2022-12-30 09:06:31 +0000
commit786b3ebb6793a6254904cee75621240dfceb6060 (patch)
treef6fc560dd287d27fa893edf2b1668031084be5ab
parent577ebf29e83ccc03484a640864c558c5352fd3fc (diff)
downloadports-786b3ebb6793a6254904cee75621240dfceb6060.tar.gz
ports-786b3ebb6793a6254904cee75621240dfceb6060.zip
graphics/webp: Unbundle libsharpyuv
-rw-r--r--graphics/webp/Makefile1
-rw-r--r--graphics/webp/files/patch-libsharpyuv591
-rw-r--r--graphics/webp/pkg-plist7
3 files changed, 599 insertions, 0 deletions
diff --git a/graphics/webp/Makefile b/graphics/webp/Makefile
index 3fa0d542ff1c..5547a94a81d4 100644
--- a/graphics/webp/Makefile
+++ b/graphics/webp/Makefile
@@ -1,5 +1,6 @@
PORTNAME= webp
PORTVERSION= 1.2.4
+PORTREVISION= 1
CATEGORIES= graphics
MASTER_SITES= http://downloads.webmproject.org/releases/webp/ \
https://storage.googleapis.com/downloads.webmproject.org/releases/webp/
diff --git a/graphics/webp/files/patch-libsharpyuv b/graphics/webp/files/patch-libsharpyuv
new file mode 100644
index 000000000000..a5c24ac81122
--- /dev/null
+++ b/graphics/webp/files/patch-libsharpyuv
@@ -0,0 +1,591 @@
+Obtained from: https://github.com/webmproject/libwebp/commit/a3b68c195e27248e4401e727dbdb21ea1ef1258f
+ https://github.com/webmproject/libwebp/commit/7deee8103edf77bf68095253668f4818d09609e1
+ https://github.com/webmproject/libwebp/commit/04764b56a00417d9c3aa5105f3b62a4445ac1fe6
+ https://github.com/webmproject/libwebp/commit/e8f83de2867456a75b13aa1e876b22e2d1e1c077
+
+--- CMakeLists.txt.orig 2022-08-05 23:49:26 UTC
++++ CMakeLists.txt
+@@ -208,6 +208,46 @@ add_definitions(-DHAVE_CONFIG_H)
+ ${CMAKE_CURRENT_BINARY_DIR}/src/webp/config.h)
+ add_definitions(-DHAVE_CONFIG_H)
+
++# Set the version numbers.
++macro(set_version FILE TARGET_NAME NAME_IN_MAKEFILE)
++ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/${FILE} SOURCE_FILE)
++ string(REGEX MATCH
++ "${NAME_IN_MAKEFILE}_la_LDFLAGS[^\n]* -version-info [0-9:]+"
++ TMP
++ ${SOURCE_FILE})
++ string(REGEX MATCH
++ "[0-9:]+"
++ TMP
++ ${TMP})
++ string(REGEX
++ REPLACE ":"
++ " "
++ LT_VERSION
++ ${TMP})
++
++ # See the libtool docs for more information:
++ # https://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
++ #
++ # c=<current>, a=<age>, r=<revision>
++ #
++ # libtool generates a .so file as .so.[c-a].a.r, while -version-info c:r:a is
++ # passed to libtool.
++ #
++ # We set FULL = [c-a].a.r and MAJOR = [c-a].
++ separate_arguments(LT_VERSION)
++ list(GET LT_VERSION 0 LT_CURRENT)
++ list(GET LT_VERSION 1 LT_REVISION)
++ list(GET LT_VERSION 2 LT_AGE)
++ math(EXPR LT_CURRENT_MINUS_AGE "${LT_CURRENT} - ${LT_AGE}")
++
++ set_target_properties(
++ ${TARGET_NAME}
++ PROPERTIES VERSION
++ ${LT_CURRENT_MINUS_AGE}.${LT_AGE}.${LT_REVISION}
++ SOVERSION
++ ${LT_CURRENT_MINUS_AGE})
++endmacro()
++
+ # ##############################################################################
+ # Build the webpdecoder library.
+
+@@ -235,15 +275,25 @@ parse_makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv
+
+ parse_makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv "WEBP_SHARPYUV_SRCS"
+ "")
+-add_library(sharpyuv OBJECT ${WEBP_SHARPYUV_SRCS})
++add_library(sharpyuv ${WEBP_SHARPYUV_SRCS})
++set_version(sharpyuv/Makefile.am sharpyuv sharpyuv)
+ target_include_directories(sharpyuv
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
+- ${CMAKE_CURRENT_SOURCE_DIR})
++ ${CMAKE_CURRENT_SOURCE_DIR}
++ ${CMAKE_CURRENT_SOURCE_DIR}/src)
+ set_target_properties(
+ sharpyuv
+ PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv/sharpyuv.h;\
+-${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv/sharpyuv_csp.h;\
+-${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h")
++${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv/sharpyuv_csp.h")
++configure_pkg_config("sharpyuv/libsharpyuv.pc")
++install(TARGETS sharpyuv
++ EXPORT ${PROJECT_NAME}Targets
++ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/webp/sharpyuv
++ INCLUDES
++ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ${CMAKE_INSTALL_INCLUDEDIR}/webp
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+ if(MSVC)
+ # avoid security warnings for e.g., fopen() used in the examples.
+@@ -291,7 +341,8 @@ target_include_directories(webpencode
+ add_library(webpencode OBJECT ${WEBP_ENC_SRCS})
+ target_include_directories(webpencode
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
+- ${CMAKE_CURRENT_SOURCE_DIR})
++ ${CMAKE_CURRENT_SOURCE_DIR}
++ ${CMAKE_CURRENT_SOURCE_DIR}/src)
+ add_library(webpdsp
+ OBJECT
+ ${WEBP_DSP_COMMON_SRCS}
+@@ -309,11 +360,11 @@ add_library(webp
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR})
+ add_library(webp
+- $<TARGET_OBJECTS:sharpyuv>
+ $<TARGET_OBJECTS:webpdecode>
+ $<TARGET_OBJECTS:webpdsp>
+ $<TARGET_OBJECTS:webpencode>
+ $<TARGET_OBJECTS:webputils>)
++target_link_libraries(webp sharpyuv)
+ if(XCODE)
+ libwebp_add_stub_file(webp)
+ endif()
+@@ -332,8 +383,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h")
+
+ # Make sure the OBJECT libraries are built with position independent code (it is
+ # not ON by default).
+-set_target_properties(sharpyuv
+- webpdecode
++set_target_properties(webpdecode
+ webpdspdecode
+ webputilsdecode
+ webpencode
+@@ -358,48 +408,9 @@ configure_pkg_config("src/demux/libwebpdemux.pc")
+
+ configure_pkg_config("src/demux/libwebpdemux.pc")
+
+-# Set the version numbers.
+-macro(set_version FILE TARGET_NAME NAME_IN_MAKEFILE)
+- file(READ ${CMAKE_CURRENT_SOURCE_DIR}/src/${FILE} SOURCE_FILE)
+- string(REGEX MATCH
+- "${NAME_IN_MAKEFILE}_la_LDFLAGS[^\n]* -version-info [0-9:]+"
+- TMP
+- ${SOURCE_FILE})
+- string(REGEX MATCH
+- "[0-9:]+"
+- TMP
+- ${TMP})
+- string(REGEX
+- REPLACE ":"
+- " "
+- LT_VERSION
+- ${TMP})
+-
+- # See the libtool docs for more information:
+- # https://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
+- #
+- # c=<current>, a=<age>, r=<revision>
+- #
+- # libtool generates a .so file as .so.[c-a].a.r, while -version-info c:r:a is
+- # passed to libtool.
+- #
+- # We set FULL = [c-a].a.r and MAJOR = [c-a].
+- separate_arguments(LT_VERSION)
+- list(GET LT_VERSION 0 LT_CURRENT)
+- list(GET LT_VERSION 1 LT_REVISION)
+- list(GET LT_VERSION 2 LT_AGE)
+- math(EXPR LT_CURRENT_MINUS_AGE "${LT_CURRENT} - ${LT_AGE}")
+-
+- set_target_properties(
+- ${TARGET_NAME}
+- PROPERTIES VERSION
+- ${LT_CURRENT_MINUS_AGE}.${LT_AGE}.${LT_REVISION}
+- SOVERSION
+- ${LT_CURRENT_MINUS_AGE})
+-endmacro()
+-set_version(Makefile.am webp webp)
+-set_version(Makefile.am webpdecoder webpdecoder)
+-set_version(demux/Makefile.am webpdemux webpdemux)
++set_version(src/Makefile.am webp webp)
++set_version(src/Makefile.am webpdecoder webpdecoder)
++set_version(src/demux/Makefile.am webpdemux webpdemux)
+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/configure.ac CONFIGURE_FILE)
+ string(REGEX MATCH
+ "AC_INIT\\([^\n]*\\[[0-9\\.]+\\]"
+@@ -514,7 +525,7 @@ if(WEBP_BUILD_LIBWEBPMUX)
+ target_include_directories(libwebpmux
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR})
+- set_version(mux/Makefile.am libwebpmux webpmux)
++ set_version(src/mux/Makefile.am libwebpmux webpmux)
+ set_target_properties(libwebpmux
+ PROPERTIES PUBLIC_HEADER
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux.h;\
+--- configure.orig 2022-08-05 23:55:13 UTC
++++ configure
+@@ -15776,7 +15776,7 @@ ac_config_headers="$ac_config_headers src/webp/config.
+
+ ac_config_headers="$ac_config_headers src/webp/config.h"
+
+-ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile examples/Makefile extras/Makefile imageio/Makefile sharpyuv/Makefile src/dec/Makefile src/enc/Makefile src/dsp/Makefile src/demux/Makefile src/mux/Makefile src/utils/Makefile src/libwebp.pc src/libwebpdecoder.pc src/demux/libwebpdemux.pc src/mux/libwebpmux.pc"
++ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile examples/Makefile extras/Makefile imageio/Makefile sharpyuv/Makefile sharpyuv/libsharpyuv.pc src/dec/Makefile src/enc/Makefile src/dsp/Makefile src/demux/Makefile src/mux/Makefile src/utils/Makefile src/libwebp.pc src/libwebpdecoder.pc src/demux/libwebpdemux.pc src/mux/libwebpmux.pc"
+
+
+
+@@ -16837,6 +16837,7 @@ do
+ "extras/Makefile") CONFIG_FILES="$CONFIG_FILES extras/Makefile" ;;
+ "imageio/Makefile") CONFIG_FILES="$CONFIG_FILES imageio/Makefile" ;;
+ "sharpyuv/Makefile") CONFIG_FILES="$CONFIG_FILES sharpyuv/Makefile" ;;
++ "sharpyuv/libsharpyuv.pc") CONFIG_FILES="$CONFIG_FILES sharpyuv/libsharpyuv.pc" ;;
+ "src/dec/Makefile") CONFIG_FILES="$CONFIG_FILES src/dec/Makefile" ;;
+ "src/enc/Makefile") CONFIG_FILES="$CONFIG_FILES src/enc/Makefile" ;;
+ "src/dsp/Makefile") CONFIG_FILES="$CONFIG_FILES src/dsp/Makefile" ;;
+--- sharpyuv/Makefile.in.orig 2022-08-05 23:55:14 UTC
++++ sharpyuv/Makefile.in
+@@ -90,7 +90,6 @@ host_triplet = @host@
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+-noinst_PROGRAMS =
+ subdir = sharpyuv
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+@@ -99,14 +98,42 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGUR
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+-DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+- $(am__DIST_COMMON)
++DIST_COMMON = $(srcdir)/Makefile.am $(libsharpyuvinclude_HEADERS) \
++ $(noinst_HEADERS) $(am__DIST_COMMON)
+ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = $(top_builddir)/src/webp/config.h
+-CONFIG_CLEAN_FILES =
++CONFIG_CLEAN_FILES = libsharpyuv.pc
+ CONFIG_CLEAN_VPATH_FILES =
+-PROGRAMS = $(noinst_PROGRAMS)
+-LTLIBRARIES = $(noinst_LTLIBRARIES)
++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
++am__vpath_adj = case $$p in \
++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
++ *) f=$$p;; \
++ esac;
++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
++am__install_max = 40
++am__nobase_strip_setup = \
++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
++am__nobase_strip = \
++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
++am__nobase_list = $(am__nobase_strip_setup); \
++ for p in $$list; do echo "$$p $$p"; done | \
++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
++ if (++n[$$2] == $(am__install_max)) \
++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
++ END { for (dir in files) print dir, files[dir] }'
++am__base_list = \
++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
++am__uninstall_files_from_dir = { \
++ test -z "$$files" \
++ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
++ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
++ $(am__cd) "$$dir" && rm -f $$files; }; \
++ }
++am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
++ "$(DESTDIR)$(libsharpyuvincludedir)"
++LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
+ libsharpyuv_la_DEPENDENCIES = libsharpyuv_sse2.la libsharpyuv_neon.la
+ am_libsharpyuv_la_OBJECTS = libsharpyuv_la-sharpyuv_csp.lo \
+ libsharpyuv_la-sharpyuv_dsp.lo \
+@@ -183,7 +210,8 @@ am__can_run_installinfo = \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+-HEADERS = $(noinst_HEADERS)
++DATA = $(pkgconfig_DATA)
++HEADERS = $(libsharpyuvinclude_HEADERS) $(noinst_HEADERS)
+ am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+ # Read a list of newline-separated strings from the standard input,
+ # and print each of them once, without duplicates. Input order is
+@@ -201,7 +229,8 @@ am__define_uniq_tagged_files = \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
++am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/libsharpyuv.pc.in \
++ $(top_srcdir)/depcomp
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+@@ -348,9 +377,10 @@ top_srcdir = @top_srcdir@
+ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+-noinst_LTLIBRARIES = libsharpyuv.la libsharpyuv_sse2.la \
+- libsharpyuv_neon.la
+-noinst_HEADERS = ../src/webp/types.h ../src/dsp/cpu.h
++lib_LTLIBRARIES = libsharpyuv.la
++noinst_LTLIBRARIES = libsharpyuv_sse2.la libsharpyuv_neon.la
++libsharpyuvinclude_HEADERS = sharpyuv.h sharpyuv_csp.h
++noinst_HEADERS = ../src/dsp/cpu.h
+ libsharpyuv_sse2_la_SOURCES = sharpyuv_sse2.c
+ libsharpyuv_sse2_la_CPPFLAGS = $(libsharpyuv_la_CPPFLAGS)
+ libsharpyuv_sse2_la_CFLAGS = $(AM_CFLAGS) $(SSE2_FLAGS)
+@@ -361,8 +391,10 @@ libsharpyuv_la_CPPFLAGS = $(AM_CPPFLAGS)
+ sharpyuv_dsp.h sharpyuv_gamma.c sharpyuv_gamma.h sharpyuv.c \
+ sharpyuv.h
+ libsharpyuv_la_CPPFLAGS = $(AM_CPPFLAGS)
+-libsharpyuv_la_LDFLAGS =
++libsharpyuv_la_LDFLAGS = -no-undefined -version-info 0:0:0
+ libsharpyuv_la_LIBADD = libsharpyuv_sse2.la libsharpyuv_neon.la
++libsharpyuvincludedir = $(includedir)/webp/sharpyuv
++pkgconfig_DATA = libsharpyuv.pc
+ all: all-am
+
+ .SUFFIXES:
+@@ -396,16 +428,44 @@ $(am__aclocal_m4_deps):
+ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ $(am__aclocal_m4_deps):
++libsharpyuv.pc: $(top_builddir)/config.status $(srcdir)/libsharpyuv.pc.in
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+-clean-noinstPROGRAMS:
+- @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+- echo " rm -f" $$list; \
+- rm -f $$list || exit $$?; \
+- test -n "$(EXEEXT)" || exit 0; \
+- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+- echo " rm -f" $$list; \
+- rm -f $$list
++install-libLTLIBRARIES: $(lib_LTLIBRARIES)
++ @$(NORMAL_INSTALL)
++ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
++ list2=; for p in $$list; do \
++ if test -f $$p; then \
++ list2="$$list2 $$p"; \
++ else :; fi; \
++ done; \
++ test -z "$$list2" || { \
++ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
++ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
++ }
+
++uninstall-libLTLIBRARIES:
++ @$(NORMAL_UNINSTALL)
++ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
++ for p in $$list; do \
++ $(am__strip_dir) \
++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
++ done
++
++clean-libLTLIBRARIES:
++ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
++ @list='$(lib_LTLIBRARIES)'; \
++ locs=`for p in $$list; do echo $$p; done | \
++ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
++ sort -u`; \
++ test -z "$$locs" || { \
++ echo rm -f $${locs}; \
++ rm -f $${locs}; \
++ }
++
+ clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+@@ -418,7 +478,7 @@ libsharpyuv.la: $(libsharpyuv_la_OBJECTS) $(libsharpyu
+ }
+
+ libsharpyuv.la: $(libsharpyuv_la_OBJECTS) $(libsharpyuv_la_DEPENDENCIES) $(EXTRA_libsharpyuv_la_DEPENDENCIES)
+- $(AM_V_CCLD)$(libsharpyuv_la_LINK) $(libsharpyuv_la_OBJECTS) $(libsharpyuv_la_LIBADD) $(LIBS)
++ $(AM_V_CCLD)$(libsharpyuv_la_LINK) -rpath $(libdir) $(libsharpyuv_la_OBJECTS) $(libsharpyuv_la_LIBADD) $(LIBS)
+
+ libsharpyuv_neon.la: $(libsharpyuv_neon_la_OBJECTS) $(libsharpyuv_neon_la_DEPENDENCIES) $(EXTRA_libsharpyuv_neon_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libsharpyuv_neon_la_LINK) $(libsharpyuv_neon_la_OBJECTS) $(libsharpyuv_neon_la_LIBADD) $(LIBS)
+@@ -516,7 +576,49 @@ clean-libtool:
+
+ clean-libtool:
+ -rm -rf .libs _libs
++install-pkgconfigDATA: $(pkgconfig_DATA)
++ @$(NORMAL_INSTALL)
++ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
++ if test -n "$$list"; then \
++ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
++ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
++ fi; \
++ for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ echo "$$d$$p"; \
++ done | $(am__base_list) | \
++ while read files; do \
++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
++ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
++ done
+
++uninstall-pkgconfigDATA:
++ @$(NORMAL_UNINSTALL)
++ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
++ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
++install-libsharpyuvincludeHEADERS: $(libsharpyuvinclude_HEADERS)
++ @$(NORMAL_INSTALL)
++ @list='$(libsharpyuvinclude_HEADERS)'; test -n "$(libsharpyuvincludedir)" || list=; \
++ if test -n "$$list"; then \
++ echo " $(MKDIR_P) '$(DESTDIR)$(libsharpyuvincludedir)'"; \
++ $(MKDIR_P) "$(DESTDIR)$(libsharpyuvincludedir)" || exit 1; \
++ fi; \
++ for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ echo "$$d$$p"; \
++ done | $(am__base_list) | \
++ while read files; do \
++ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libsharpyuvincludedir)'"; \
++ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libsharpyuvincludedir)" || exit $$?; \
++ done
++
++uninstall-libsharpyuvincludeHEADERS:
++ @$(NORMAL_UNINSTALL)
++ @list='$(libsharpyuvinclude_HEADERS)'; test -n "$(libsharpyuvincludedir)" || list=; \
++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
++ dir='$(DESTDIR)$(libsharpyuvincludedir)'; $(am__uninstall_files_from_dir)
++
+ ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+ tags: tags-am
+@@ -603,8 +705,11 @@ check: check-am
+ done
+ check-am: all-am
+ check: check-am
+-all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(HEADERS)
++all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+ installdirs:
++ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(libsharpyuvincludedir)"; do \
++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
++ done
+ install: install-am
+ install-exec: install-exec-am
+ install-data: install-data-am
+@@ -637,8 +742,8 @@ clean: clean-am
+ @echo "it deletes files that may require special tools to rebuild."
+ clean: clean-am
+
+-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+- clean-noinstPROGRAMS mostlyclean-am
++clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
++ clean-noinstLTLIBRARIES mostlyclean-am
+
+ distclean: distclean-am
+ -rm -f ./$(DEPDIR)/libsharpyuv_la-sharpyuv.Plo
+@@ -663,13 +768,14 @@ info-am:
+
+ info-am:
+
+-install-data-am:
++install-data-am: install-libsharpyuvincludeHEADERS \
++ install-pkgconfigDATA
+
+ install-dvi: install-dvi-am
+
+ install-dvi-am:
+
+-install-exec-am:
++install-exec-am: install-libLTLIBRARIES
+
+ install-html: install-html-am
+
+@@ -714,23 +820,27 @@ ps-am:
+
+ ps-am:
+
+-uninstall-am:
++uninstall-am: uninstall-libLTLIBRARIES \
++ uninstall-libsharpyuvincludeHEADERS uninstall-pkgconfigDATA
+
+ .MAKE: install-am install-strip
+
+ .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
+- clean-generic clean-libtool clean-noinstLTLIBRARIES \
+- clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
++ clean-generic clean-libLTLIBRARIES clean-libtool \
++ clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+- install-html-am install-info install-info-am install-man \
+- install-pdf install-pdf-am install-ps install-ps-am \
+- install-strip installcheck installcheck-am installdirs \
+- maintainer-clean maintainer-clean-generic mostlyclean \
+- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+- pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am
++ install-html-am install-info install-info-am \
++ install-libLTLIBRARIES install-libsharpyuvincludeHEADERS \
++ install-man install-pdf install-pdf-am install-pkgconfigDATA \
++ install-ps install-ps-am install-strip installcheck \
++ installcheck-am installdirs maintainer-clean \
++ maintainer-clean-generic mostlyclean mostlyclean-compile \
++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
++ uninstall-libsharpyuvincludeHEADERS uninstall-pkgconfigDATA
+
+ .PRECIOUS: Makefile
+
+--- sharpyuv/libsharpyuv.pc.in.orig 2022-10-15 00:14:31 UTC
++++ sharpyuv/libsharpyuv.pc.in
+@@ -0,0 +1,11 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@/webp
++
++Name: libsharpyuv
++Description: Library for sharp RGB to YUV conversion
++Version: @PACKAGE_VERSION@
++Cflags: -I${includedir}
++Libs: -L${libdir} -lsharpyuv
++Libs.private: -lm @PTHREAD_CFLAGS@ @PTHREAD_LIBS@
+--- sharpyuv/sharpyuv.c.orig 2022-08-05 23:49:26 UTC
++++ sharpyuv/sharpyuv.c
+@@ -417,7 +417,7 @@ static int DoSharpArgbToYuv(const uint8_t* r_ptr, cons
+ // Hidden exported init function.
+ // By default SharpYuvConvert calls it with NULL. If needed, users can declare
+ // it as extern and call it with a VP8CPUInfo function.
+-extern void SharpYuvInit(VP8CPUInfo cpu_info_func);
++SHARPYUV_EXTERN void SharpYuvInit(VP8CPUInfo cpu_info_func);
+ void SharpYuvInit(VP8CPUInfo cpu_info_func) {
+ static volatile VP8CPUInfo sharpyuv_last_cpuinfo_used =
+ (VP8CPUInfo)&sharpyuv_last_cpuinfo_used;
+--- sharpyuv/sharpyuv.h.orig 2022-08-05 23:49:26 UTC
++++ sharpyuv/sharpyuv.h
+@@ -18,6 +18,20 @@ extern "C" {
+ extern "C" {
+ #endif
+
++#ifndef SHARPYUV_EXTERN
++#ifdef WEBP_EXTERN
++#define SHARPYUV_EXTERN WEBP_EXTERN
++#else
++// This explicitly marks library functions and allows for changing the
++// signature for e.g., Windows DLL builds.
++#if defined(__GNUC__) && __GNUC__ >= 4
++#define SHARPYUV_EXTERN extern __attribute__((visibility("default")))
++#else
++#define SHARPYUV_EXTERN extern
++#endif /* __GNUC__ >= 4 */
++#endif /* WEBP_EXTERN */
++#endif /* SHARPYUV_EXTERN */
++
+ // SharpYUV API version following the convention from semver.org
+ #define SHARPYUV_VERSION_MAJOR 0
+ #define SHARPYUV_VERSION_MINOR 1
+@@ -65,11 +79,13 @@ typedef struct {
+ // adjacent pixels on the y, u and v channels. If yuv_bit_depth > 8, they
+ // should be multiples of 2.
+ // width, height: width and height of the image in pixels
+-int SharpYuvConvert(const void* r_ptr, const void* g_ptr, const void* b_ptr,
+- int rgb_step, int rgb_stride, int rgb_bit_depth,
+- void* y_ptr, int y_stride, void* u_ptr, int u_stride,
+- void* v_ptr, int v_stride, int yuv_bit_depth, int width,
+- int height, const SharpYuvConversionMatrix* yuv_matrix);
++SHARPYUV_EXTERN int SharpYuvConvert(const void* r_ptr, const void* g_ptr,
++ const void* b_ptr, int rgb_step,
++ int rgb_stride, int rgb_bit_depth,
++ void* y_ptr, int y_stride, void* u_ptr,
++ int u_stride, void* v_ptr, int v_stride,
++ int yuv_bit_depth, int width, int height,
++ const SharpYuvConversionMatrix* yuv_matrix);
+
+ // TODO(b/194336375): Add YUV444 to YUV420 conversion. Maybe also add 422
+ // support (it's rarely used in practice, especially for images).
+--- sharpyuv/sharpyuv_csp.h.orig 2022-08-05 23:49:26 UTC
++++ sharpyuv/sharpyuv_csp.h
+@@ -35,8 +35,9 @@ typedef struct {
+ } SharpYuvColorSpace;
+
+ // Fills in 'matrix' for the given YUVColorSpace.
+-void SharpYuvComputeConversionMatrix(const SharpYuvColorSpace* yuv_color_space,
+- SharpYuvConversionMatrix* matrix);
++SHARPYUV_EXTERN void SharpYuvComputeConversionMatrix(
++ const SharpYuvColorSpace* yuv_color_space,
++ SharpYuvConversionMatrix* matrix);
+
+ // Enums for precomputed conversion matrices.
+ typedef enum {
+@@ -49,7 +50,7 @@ typedef enum {
+ } SharpYuvMatrixType;
+
+ // Returns a pointer to a matrix for one of the predefined colorspaces.
+-const SharpYuvConversionMatrix* SharpYuvGetConversionMatrix(
++SHARPYUV_EXTERN const SharpYuvConversionMatrix* SharpYuvGetConversionMatrix(
+ SharpYuvMatrixType matrix_type);
+
+ #ifdef __cplusplus
+--- src/libwebp.pc.in.orig 2022-08-05 23:49:26 UTC
++++ src/libwebp.pc.in
+@@ -6,6 +6,7 @@ Version: @PACKAGE_VERSION@
+ Name: libwebp
+ Description: Library for the WebP graphics format
+ Version: @PACKAGE_VERSION@
++Requires: libsharpyuv
+ Cflags: -I${includedir}
+ Libs: -L${libdir} -lwebp
+ Libs.private: -lm @PTHREAD_CFLAGS@ @PTHREAD_LIBS@
diff --git a/graphics/webp/pkg-plist b/graphics/webp/pkg-plist
index 208a91457a54..d25732b22f2b 100644
--- a/graphics/webp/pkg-plist
+++ b/graphics/webp/pkg-plist
@@ -10,7 +10,13 @@ include/webp/demux.h
include/webp/encode.h
include/webp/mux.h
include/webp/mux_types.h
+include/webp/sharpyuv/sharpyuv.h
+include/webp/sharpyuv/sharpyuv_csp.h
include/webp/types.h
+lib/libsharpyuv.a
+lib/libsharpyuv.so
+lib/libsharpyuv.so.0
+lib/libsharpyuv.so.0.0.0
lib/libwebp.a
lib/libwebp.so
lib/libwebp.so.7
@@ -27,6 +33,7 @@ lib/libwebpmux.a
lib/libwebpmux.so
lib/libwebpmux.so.3
lib/libwebpmux.so.3.0.10
+libdata/pkgconfig/libsharpyuv.pc
libdata/pkgconfig/libwebp.pc
libdata/pkgconfig/libwebpdecoder.pc
libdata/pkgconfig/libwebpdemux.pc