iosbuild,xcframeworkbuild: add SharpYuv framework

Provides the missing symbols in WebP.framework & WebP.xcframework:
Undefined symbols for architecture arm64:
  "_SharpYuvConvert", referenced from:
      _ImportYUVAFromRGBA in libwebp.a(libwebpencode_la-picture_csp_enc.o)
  "_SharpYuvGetConversionMatrix", referenced from:
      _ImportYUVAFromRGBA in libwebp.a(libwebpencode_la-picture_csp_enc.o)
  "_SharpYuvInit", referenced from:
      _ImportYUVAFromRGBA in libwebp.a(libwebpencode_la-picture_csp_enc.o)

This was missed in:
  c3d0c2d7 fix ios build scripts after sharpyuv dep added

Bug: webp:623
Change-Id: I1c4582ec2cee801b52867674d553900d6028bea8
Fixed: webp:623
(cherry picked from commit 38cb4fc0ea29acef1eee39fde80c582f3b00d69f)
diff --git a/iosbuild.sh b/iosbuild.sh
index cd3a24c..d0fb557 100755
--- a/iosbuild.sh
+++ b/iosbuild.sh
@@ -41,6 +41,7 @@
 readonly DECTARGETDIR="${TOPDIR}/WebPDecoder.framework"
 readonly MUXTARGETDIR="${TOPDIR}/WebPMux.framework"
 readonly DEMUXTARGETDIR="${TOPDIR}/WebPDemux.framework"
+readonly SHARPYUVTARGETDIR="${TOPDIR}/SharpYuv.framework"
 readonly DEVELOPER=$(xcode-select --print-path)
 readonly PLATFORMSROOT="${DEVELOPER}/Platforms"
 readonly LIPO=$(xcrun -sdk iphoneos${SDK} -find lipo)
@@ -63,7 +64,8 @@
 echo "iOS SDK Version: ${SDK}"
 
 if [[ -e "${BUILDDIR}" || -e "${TARGETDIR}" || -e "${DECTARGETDIR}" \
-      || -e "${MUXTARGETDIR}" || -e "${DEMUXTARGETDIR}" ]]; then
+      || -e "${MUXTARGETDIR}" || -e "${DEMUXTARGETDIR}" \
+      || -e "${SHARPYUVTARGETDIR}" ]]; then
   cat << EOF
 WARNING: The following directories will be deleted:
 WARNING:   ${BUILDDIR}
@@ -71,14 +73,16 @@
 WARNING:   ${DECTARGETDIR}
 WARNING:   ${MUXTARGETDIR}
 WARNING:   ${DEMUXTARGETDIR}
+WARNING:   ${SHARPYUVTARGETDIR}
 WARNING: The build will continue in 5 seconds...
 EOF
   sleep 5
 fi
 rm -rf ${BUILDDIR} ${TARGETDIR} ${DECTARGETDIR} \
-    ${MUXTARGETDIR} ${DEMUXTARGETDIR}
+    ${MUXTARGETDIR} ${DEMUXTARGETDIR} ${SHARPYUVTARGETDIR}
 mkdir -p ${BUILDDIR} ${TARGETDIR}/Headers/ ${DECTARGETDIR}/Headers/ \
-    ${MUXTARGETDIR}/Headers/ ${DEMUXTARGETDIR}/Headers/
+    ${MUXTARGETDIR}/Headers/ ${DEMUXTARGETDIR}/Headers/ \
+    ${SHARPYUVTARGETDIR}/Headers/
 
 if [[ ! -e ${SRCDIR}/configure ]]; then
   if ! (cd ${SRCDIR} && sh autogen.sh); then
@@ -134,13 +138,14 @@
   set +x
 
   # Build only the libraries, skip the examples.
-  make V=0 -C sharpyuv
+  make V=0 -C sharpyuv install
   make V=0 -C src install
 
   LIBLIST+=" ${ROOTDIR}/lib/libwebp.a"
   DECLIBLIST+=" ${ROOTDIR}/lib/libwebpdecoder.a"
   MUXLIBLIST+=" ${ROOTDIR}/lib/libwebpmux.a"
   DEMUXLIBLIST+=" ${ROOTDIR}/lib/libwebpdemux.a"
+  SHARPYUVLIBLIST+=" ${ROOTDIR}/lib/libsharpyuv.a"
 
   make clean
 
@@ -165,4 +170,9 @@
     ${DEMUXTARGETDIR}/Headers/
 ${LIPO} -create ${DEMUXLIBLIST} -output ${DEMUXTARGETDIR}/WebPDemux
 
+echo "SHARPYUVLIBLIST = ${SHARPYUVLIBLIST}"
+cp -a ${SRCDIR}/sharpyuv/{sharpyuv,sharpyuv_csp}.h \
+    ${SHARPYUVTARGETDIR}/Headers/
+${LIPO} -create ${SHARPYUVLIBLIST} -output ${SHARPYUVTARGETDIR}/SharpYuv
+
 echo  "SUCCESS"
diff --git a/xcframeworkbuild.sh b/xcframeworkbuild.sh
index 8d484c2..14b987d 100755
--- a/xcframeworkbuild.sh
+++ b/xcframeworkbuild.sh
@@ -69,6 +69,7 @@
 readonly DECTARGETDIR="${TOPDIR}/WebPDecoder.xcframework"
 readonly MUXTARGETDIR="${TOPDIR}/WebPMux.xcframework"
 readonly DEMUXTARGETDIR="${TOPDIR}/WebPDemux.xcframework"
+readonly SHARPYUVTARGETDIR="${TOPDIR}/SharpYuv.xcframework"
 readonly DEVELOPER=$(xcode-select --print-path)
 readonly DEVROOT="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain"
 readonly PLATFORMSROOT="${DEVELOPER}/Platforms"
@@ -94,8 +95,15 @@
   local subdir
   for d in $(find "$1" -path "*/Headers"); do
     subdir="$d/$framework_name"
-    mkdir "$subdir"
-    mv "$d/"*.h "$subdir"
+    if [[ -d "$subdir" ]]; then
+      # SharpYuv will have a sharpyuv subdirectory. macOS is case insensitive,
+      # but for consistency with the other frameworks, rename the directory to
+      # match the case of the framework name.
+      mv "$(echo ${subdir} | tr 'A-Z' 'a-z')" "$subdir"
+    else
+      mkdir "$subdir"
+      mv "$d/"*.h "$subdir"
+    fi
   done
 }
 
@@ -104,7 +112,8 @@
 echo "MacOS SDK Version: ${SDK[$MACOS]}"
 
 if [[ -e "${BUILDDIR}" || -e "${TARGETDIR}" || -e "${DECTARGETDIR}" \
-      || -e "${MUXTARGETDIR}" || -e "${DEMUXTARGETDIR}" ]]; then
+      || -e "${MUXTARGETDIR}" || -e "${DEMUXTARGETDIR}" \
+      || -e "${SHARPYUVTARGETDIR}" ]]; then
   cat << EOF
 WARNING: The following directories will be deleted:
 WARNING:   ${BUILDDIR}
@@ -112,12 +121,13 @@
 WARNING:   ${DECTARGETDIR}
 WARNING:   ${MUXTARGETDIR}
 WARNING:   ${DEMUXTARGETDIR}
+WARNING:   ${SHARPYUVTARGETDIR}
 WARNING: The build will continue in 5 seconds...
 EOF
   sleep 5
 fi
 rm -rf ${BUILDDIR} ${TARGETDIR} ${DECTARGETDIR} \
-  ${MUXTARGETDIR} ${DEMUXTARGETDIR}
+  ${MUXTARGETDIR} ${DEMUXTARGETDIR} ${SHARPYUVTARGETDIR}
 
 if [[ ! -e ${SRCDIR}/configure ]]; then
   if ! (cd ${SRCDIR} && sh autogen.sh); then
@@ -137,6 +147,7 @@
   DECLIBLIST=()
   MUXLIBLIST=()
   DEMUXLIBLIST=()
+  SHARPYUVLIBLIST=()
 
   for PLATFORM in ${PLATFORMS[$i]}; do
     ROOTDIR="${BUILDDIR}/${PLATFORM}"
@@ -187,23 +198,26 @@
     set +x
 
     # Build only the libraries, skip the examples.
-    make V=0 -C sharpyuv
+    make V=0 -C sharpyuv install
     make V=0 -C src install
 
     LIBLIST+=("${ROOTDIR}/lib/libwebp.a")
     DECLIBLIST+=("${ROOTDIR}/lib/libwebpdecoder.a")
     MUXLIBLIST+=("${ROOTDIR}/lib/libwebpmux.a")
     DEMUXLIBLIST+=("${ROOTDIR}/lib/libwebpdemux.a")
+    SHARPYUVLIBLIST+=("${ROOTDIR}/lib/libsharpyuv.a")
     # xcodebuild requires a directory for the -headers option, these will match
     # for all builds.
     make -C src install-data DESTDIR="${ROOTDIR}/lib-headers"
     make -C src install-commonHEADERS DESTDIR="${ROOTDIR}/dec-headers"
     make -C src/demux install-data DESTDIR="${ROOTDIR}/demux-headers"
     make -C src/mux install-data DESTDIR="${ROOTDIR}/mux-headers"
+    make -C sharpyuv install-data DESTDIR="${ROOTDIR}/sharpyuv-headers"
     LIB_HEADERS="${ROOTDIR}/lib-headers/${ROOTDIR}/include/webp"
     DEC_HEADERS="${ROOTDIR}/dec-headers/${ROOTDIR}/include/webp"
     DEMUX_HEADERS="${ROOTDIR}/demux-headers/${ROOTDIR}/include/webp"
     MUX_HEADERS="${ROOTDIR}/mux-headers/${ROOTDIR}/include/webp"
+    SHARPYUV_HEADERS="${ROOTDIR}/sharpyuv-headers/${ROOTDIR}/include/webp"
 
     make distclean
 
@@ -220,16 +234,20 @@
   target_declib="${target_dir}/$(basename ${DECLIBLIST[0]})"
   target_demuxlib="${target_dir}/$(basename ${DEMUXLIBLIST[0]})"
   target_muxlib="${target_dir}/$(basename ${MUXLIBLIST[0]})"
+  target_sharpyuvlib="${target_dir}/$(basename ${SHARPYUVLIBLIST[0]})"
 
   mkdir -p "${target_dir}"
   ${LIPO} -create ${LIBLIST[@]} -output "${target_lib}"
   ${LIPO} -create ${DECLIBLIST[@]} -output "${target_declib}"
   ${LIPO} -create ${DEMUXLIBLIST[@]} -output "${target_demuxlib}"
   ${LIPO} -create ${MUXLIBLIST[@]} -output "${target_muxlib}"
+  ${LIPO} -create ${SHARPYUVLIBLIST[@]} -output "${target_sharpyuvlib}"
   FAT_LIBLIST+=(-library "${target_lib}" -headers "${LIB_HEADERS}")
   FAT_DECLIBLIST+=(-library "${target_declib}" -headers "${DEC_HEADERS}")
   FAT_DEMUXLIBLIST+=(-library "${target_demuxlib}" -headers "${DEMUX_HEADERS}")
   FAT_MUXLIBLIST+=(-library "${target_muxlib}" -headers "${MUX_HEADERS}")
+  FAT_SHARPYUVLIBLIST+=(-library "${target_sharpyuvlib}")
+  FAT_SHARPYUVLIBLIST+=(-headers "${SHARPYUV_HEADERS}")
 done
 
 # lipo will not put archives with the same architecture (e.g., x86_64
@@ -246,10 +264,13 @@
   -output ${DEMUXTARGETDIR}
 xcodebuild -create-xcframework "${FAT_MUXLIBLIST[@]}" \
   -output ${MUXTARGETDIR}
+xcodebuild -create-xcframework "${FAT_SHARPYUVLIBLIST[@]}" \
+  -output ${SHARPYUVTARGETDIR}
 update_headers_path "${TARGETDIR}"
 update_headers_path "${DECTARGETDIR}"
 update_headers_path "${DEMUXTARGETDIR}"
 update_headers_path "${MUXTARGETDIR}"
+update_headers_path "${SHARPYUVTARGETDIR}"
 set +x
 
 echo  "SUCCESS"