Bump libjpeg, libpng, libsharpyuv, libxml2, libyuv and zlib (#2923)
Bump libjpeg to 3.1.3
Bump libpng to 1.6.51
Bump libsharpyuv to v1.6.0
Bump libxml2 to v2.15.1
BUmp zlib to 1.3.1.2
diff --git a/.github/workflows/ci-windows-installed.yml b/.github/workflows/ci-windows-installed.yml
index 368ffa4..3562012 100644
--- a/.github/workflows/ci-windows-installed.yml
+++ b/.github/workflows/ci-windows-installed.yml
@@ -47,8 +47,8 @@
- name: Install rav1e
run: |
- $LINK = "https://github.com/xiph/rav1e/releases/download/v0.7.1"
- $FILE = "rav1e-0.7.1-windows-msvc-generic"
+ $LINK = "https://github.com/xiph/rav1e/releases/download/v0.8.1"
+ $FILE = "rav1e-0.8.1-windows-msvc-generic"
curl -LO "$LINK/$FILE.zip"
mkdir -p ${{ github.workspace }}\tmp
7z x -y "$FILE.zip" -o"${{ github.workspace }}\tmp"
diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml
index 4572a11..002c258 100644
--- a/.github/workflows/ci-windows.yml
+++ b/.github/workflows/ci-windows.yml
@@ -45,16 +45,6 @@
codec-rav1e: "LOCAL"
extra-cache-key: ${{ matrix.generator }}
- - name: Build libyuv
- if: steps.setup.outputs.ext-cache-hit != 'true'
- working-directory: ./ext
- run: ./libyuv.cmd
- # Use clang-cl to build libyuv. The assembly code in libyuv is written in the
- # GCC inline assembly format. Visual C++ doesn't support GCC inline assembly.
- env:
- CC: clang-cl
- CXX: clang-cl
-
- name: Prepare libavif (cmake)
run: >
cmake -G "${{ matrix.generator }}" -S . -B build
@@ -97,7 +87,7 @@
/link
build\libjpeg\src\libjpeg-build\${env:CONFIG_DIR}jpeg-static.lib
build\_deps\libpng\${env:CONFIG_DIR}libpng16_static.lib
- build\_deps\zlib\${env:CONFIG_DIR}zlibstatic.lib
+ build\_deps\zlib\${env:CONFIG_DIR}zs.lib
build\${env:CONFIG_DIR}avif.lib
ws2_32.lib ntdll.lib userenv.lib bcrypt.lib advapi32.lib
/out:avifenc.exe
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c0c489e..0df061d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,12 @@
AVIF specification.
* Add an optional argument to the --depth flag of avifenc used to enable a bit
depth extension scheme in the encoded file.
+* Update libjpeg.cmd/LocalJpeg.cmake: 3.1.3
+* Update libsharpyuv.cmd/LocalLibsharpyuv.cmake: v1.6.0
+* Update libxml2.cmd/LocalLibXml2.cmake: v2.15.1
+* Update libyuv.cmd/LocalLibyuv.cmake: deeb764bb (1922)
+* Update LocalRav1e.cmake: cargo-c v0.10.14, corrosion v0.5.2,
+* Update zlibpng.cmd/LocalZlibpng.cmake: libpng 1.6.51, zlib 1.3.1.2
### Changed since 1.3.0
diff --git a/cmake/Modules/LocalJpeg.cmake b/cmake/Modules/LocalJpeg.cmake
index 8696a30..e109a16 100644
--- a/cmake/Modules/LocalJpeg.cmake
+++ b/cmake/Modules/LocalJpeg.cmake
@@ -1,4 +1,4 @@
-set(AVIF_JPEG_TAG "3.1.1")
+set(AVIF_JPEG_TAG "3.1.3")
add_library(JPEG::JPEG STATIC IMPORTED GLOBAL)
diff --git a/cmake/Modules/LocalLibXml2.cmake b/cmake/Modules/LocalLibXml2.cmake
index 436a93c..66111db 100644
--- a/cmake/Modules/LocalLibXml2.cmake
+++ b/cmake/Modules/LocalLibXml2.cmake
@@ -1,46 +1,69 @@
-set(AVIF_LIBXML_GIT_TAG "v2.14.4")
+set(AVIF_LIBXML_GIT_TAG "v2.15.1")
-set(LIB_FILENAME "${AVIF_SOURCE_DIR}/ext/libxml2/install.libavif/lib/${AVIF_LIBRARY_PREFIX}xml2${CMAKE_STATIC_LIBRARY_SUFFIX}")
-if(EXISTS "${LIB_FILENAME}")
- message(STATUS "libavif(AVIF_LIBXML2=LOCAL): compiled library found at ${LIB_FILENAME}")
- add_library(LibXml2 STATIC IMPORTED GLOBAL)
- set_target_properties(LibXml2 PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
- target_include_directories(LibXml2 INTERFACE "${AVIF_SOURCE_DIR}/ext/libxml2/install.libavif/include/libxml2")
- add_library(LibXml2::LibXml2 ALIAS LibXml2)
-else()
- message(STATUS "libavif(AVIF_LIBXML2=LOCAL): compiled library not found at ${LIB_FILENAME}; using FetchContent")
- if(EXISTS "${AVIF_SOURCE_DIR}/ext/libxml2")
- message(STATUS "libavif(AVIF_LIBXML2=LOCAL): ext/libxml2 found; using as FetchContent SOURCE_DIR")
- set(FETCHCONTENT_SOURCE_DIR_LIBXML2 "${AVIF_SOURCE_DIR}/ext/libxml2")
- message(CHECK_START "libavif(AVIF_LIBXML2=LOCAL): configuring libxml2")
- else()
- message(CHECK_START "libavif(AVIF_LIBXML2=LOCAL): fetching and configuring libxml2")
- endif()
+# First, whether the library exists.
+set(PREFIXES lib ${AVIF_LIBRARY_PREFIX})
+set(SUFFIXES "s" "sd" " ")
+foreach(PREFIX IN LISTS PREFIXES)
+ foreach(SUFFIX IN LISTS SUFFIXES)
+ set(LIB_FILENAME
+ "${AVIF_SOURCE_DIR}/ext/libxml2/install.libavif/lib/${PREFIX}xml2${SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ )
+ if(EXISTS "${LIB_FILENAME}")
+ message(INFO ${CMAKE_LINK_LIBRARY_FLAG})
+ message(STATUS "libavif(AVIF_LIBXML2=LOCAL): compiled library found at ${LIB_FILENAME}")
+ add_library(LibXml2 STATIC IMPORTED GLOBAL)
+ set_target_properties(LibXml2 PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
+ if(WIN32)
+ target_link_libraries(LibXml2 INTERFACE bcrypt.lib)
+ endif()
+ target_compile_definitions(LibXml2 INTERFACE LIBXML_STATIC)
+ target_include_directories(LibXml2 INTERFACE "${AVIF_SOURCE_DIR}/ext/libxml2/install.libavif/include/libxml2")
+ add_library(LibXml2::LibXml2 ALIAS LibXml2)
+ endif()
+ endforeach()
+endforeach()
- set(LIBXML2_WITH_PYTHON OFF CACHE INTERNAL "-")
- set(LIBXML2_WITH_ZLIB OFF CACHE INTERNAL "-")
- set(LIBXML2_WITH_LZMA OFF CACHE INTERNAL "-")
- set(LIBXML2_WITH_ICONV OFF CACHE INTERNAL "-")
- set(LIBXML2_WITH_TESTS OFF CACHE INTERNAL "-")
- set(LIBXML2_WITH_PROGRAMS OFF CACHE INTERNAL "-")
-
- set(LIBXML2_BINARY_DIR "${FETCHCONTENT_BASE_DIR}/libxml2-build")
- if(ANDROID_ABI)
- set(LIBXML2_BINARY_DIR "${LIBXML2_BINARY_DIR}/${ANDROID_ABI}")
- endif()
-
- FetchContent_Declare(
- libxml2
- GIT_REPOSITORY "https://github.com/GNOME/libxml2.git"
- BINARY_DIR "${LIBXML2_BINARY_DIR}"
- GIT_TAG "${AVIF_LIBXML_GIT_TAG}"
- GIT_SHALLOW ON
- UPDATE_COMMAND ""
- )
-
- avif_fetchcontent_populate_cmake(libxml2)
-
- set_property(TARGET LibXml2 PROPERTY AVIF_LOCAL ON)
-
- message(CHECK_PASS "complete")
+if(TARGET LibXml2::LibXml2)
+ return()
endif()
+
+message(STATUS "libavif(AVIF_LIBXML2=LOCAL): compiled library not found at ${LIB_FILENAME}; using FetchContent")
+if(EXISTS "${AVIF_SOURCE_DIR}/ext/libxml2")
+ message(STATUS "libavif(AVIF_LIBXML2=LOCAL): ext/libxml2 found; using as FetchContent SOURCE_DIR")
+ set(FETCHCONTENT_SOURCE_DIR_LIBXML2 "${AVIF_SOURCE_DIR}/ext/libxml2")
+ message(CHECK_START "libavif(AVIF_LIBXML2=LOCAL): configuring libxml2")
+else()
+ message(CHECK_START "libavif(AVIF_LIBXML2=LOCAL): fetching and configuring libxml2")
+endif()
+
+set(LIBXML2_WITH_ICONV OFF CACHE INTERNAL "-")
+set(LIBXML2_WITH_PROGRAMS OFF CACHE INTERNAL "-")
+set(LIBXML2_WITH_PYTHON OFF CACHE INTERNAL "-")
+set(LIBXML2_WITH_TESTS OFF CACHE INTERNAL "-")
+set(LIBXML2_WITH_ZLIB OFF CACHE INTERNAL "-")
+
+set(LIBXML2_BINARY_DIR "${FETCHCONTENT_BASE_DIR}/libxml2-build")
+if(ANDROID_ABI)
+ set(LIBXML2_BINARY_DIR "${LIBXML2_BINARY_DIR}/${ANDROID_ABI}")
+endif()
+
+FetchContent_Declare(
+ libxml2
+ GIT_REPOSITORY "https://github.com/GNOME/libxml2.git"
+ BINARY_DIR "${LIBXML2_BINARY_DIR}"
+ GIT_TAG "${AVIF_LIBXML_GIT_TAG}"
+ GIT_SHALLOW ON
+ UPDATE_COMMAND ""
+)
+
+avif_fetchcontent_populate_cmake(libxml2)
+
+set_property(TARGET LibXml2 PROPERTY AVIF_LOCAL ON)
+get_target_property(VAR1 LibXml2 LINKER_LANGUAGE)
+get_target_property(VAR2 LibXml2 LINK_LIBRARIES)
+get_target_property(VAR3 LibXml2 LINK_DIRECTORIES)
+get_target_property(VAR4 LibXml2 LINKER_TYPE)
+get_target_property(VAR5 LibXml2 LINK_FLAGS)
+get_target_property(VAR6 LibXml2 LINK_OPTIONS)
+
+message(CHECK_PASS "complete")
diff --git a/cmake/Modules/LocalLibsharpyuv.cmake b/cmake/Modules/LocalLibsharpyuv.cmake
index f093d61..37e66d7 100644
--- a/cmake/Modules/LocalLibsharpyuv.cmake
+++ b/cmake/Modules/LocalLibsharpyuv.cmake
@@ -1,4 +1,4 @@
-set(AVIF_LIBSHARPYUV_GIT_TAG v1.5.0)
+set(AVIF_LIBSHARPYUV_GIT_TAG v1.6.0)
set(LIB_FILENAME "${CMAKE_CURRENT_SOURCE_DIR}/ext/libwebp/build/libsharpyuv${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(EXISTS "${LIB_FILENAME}")
diff --git a/cmake/Modules/LocalLibyuv.cmake b/cmake/Modules/LocalLibyuv.cmake
index d8730c5..516eeab 100644
--- a/cmake/Modules/LocalLibyuv.cmake
+++ b/cmake/Modules/LocalLibyuv.cmake
@@ -1,4 +1,4 @@
-set(AVIF_LIBYUV_TAG "4db2af62dab48895226be6b52737247e898ebe36")
+set(AVIF_LIBYUV_TAG "deeb764bb92b6305ee0cb5dae7a5940fdb457fa9")
set(AVIF_LIBYUV_BUILD_DIR "${AVIF_SOURCE_DIR}/ext/libyuv/build")
# If ${ANDROID_ABI} is set, look for the library under that subdirectory.
diff --git a/cmake/Modules/LocalRav1e.cmake b/cmake/Modules/LocalRav1e.cmake
index dfeec14..2bc6b24 100644
--- a/cmake/Modules/LocalRav1e.cmake
+++ b/cmake/Modules/LocalRav1e.cmake
@@ -1,6 +1,6 @@
set(AVIF_RAV1E_GIT_TAG v0.8.1)
-set(AVIF_CORROSION_GIT_TAG v0.5.2)
-set(AVIF_CARGOC_GIT_TAG v0.10.14)
+set(AVIF_CORROSION_GIT_TAG v0.6.0)
+set(AVIF_CARGOC_GIT_TAG v0.10.18)
set(RAV1E_LIB_FILENAME
"${AVIF_SOURCE_DIR}/ext/rav1e/build.libavif/usr/lib/${AVIF_LIBRARY_PREFIX}rav1e${CMAKE_STATIC_LIBRARY_SUFFIX}"
diff --git a/cmake/Modules/LocalZlibpng.cmake b/cmake/Modules/LocalZlibpng.cmake
index 19c3c69..8268bdd 100644
--- a/cmake/Modules/LocalZlibpng.cmake
+++ b/cmake/Modules/LocalZlibpng.cmake
@@ -1,5 +1,6 @@
-set(AVIF_ZLIB_GIT_TAG v1.3.1)
-set(AVIF_LIBPNG_GIT_TAG v1.6.50)
+set(AVIF_ZLIB_GIT_TAG v1.3.1.2)
+# v1.6.51 and v1.6.53 confuse CMake by giving Unix flags with MSVC on ci-windows.yml
+set(AVIF_LIBPNG_GIT_TAG v1.6.51)
if(EXISTS "${AVIF_SOURCE_DIR}/ext/zlib")
message(STATUS "libavif(AVIF_ZLIBPNG=LOCAL): ext/zlib found; using as FetchContent SOURCE_DIR")
@@ -16,28 +17,27 @@
set(ZLIB_BINARY_DIR "${ZLIB_BINARY_DIR}/${ANDROID_ABI}")
endif()
-# The patch is taken from Google's or-tools
-# https://github.com/google/or-tools/blob/73bef34d95768a0fc0676023bd68111946deb417/cmake/dependencies/CMakeLists.txt
FetchContent_Declare(
zlib
GIT_REPOSITORY "https://github.com/madler/zlib.git"
SOURCE_DIR "${ZLIB_SOURCE_DIR}" BINARY_DIR "${ZLIB_BINARY_DIR}"
GIT_TAG "${AVIF_ZLIB_GIT_TAG}"
GIT_SHALLOW ON
- PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_SOURCE_DIR}/ext/zlib.patch"
UPDATE_COMMAND ""
)
-# Put the value of ZLIB_INCLUDE_DIR in the cache. This works around cmake behavior that has been updated by
-# cmake policy CMP0102 in cmake 3.17. Remove the CACHE workaround when we require cmake 3.17 or later. See
-# https://gitlab.kitware.com/cmake/cmake/-/issues/21343.
-set(ZLIB_INCLUDE_DIR "${ZLIB_SOURCE_DIR}" CACHE PATH "zlib include dir")
-set(ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "")
+set(ZLIB_BUILD_TESTING OFF CACHE BOOL "")
+set(ZLIB_BUILD_SHARED OFF CACHE BOOL "")
+set(ZLIB_BUILD_STATIC ON CACHE BOOL "")
if(NOT zlib_POPULATED)
avif_fetchcontent_populate_cmake(zlib)
endif()
+if(NOT TARGET ZLIB::ZLIB)
+ add_library(ZLIB::ZLIB ALIAS zlibstatic)
+endif()
+
set(CMAKE_DEBUG_POSTFIX "")
message(CHECK_PASS "complete")
@@ -55,7 +55,6 @@
set(ANDROID TRUE)
set(ZLIB_LIBRARY ZLIB)
set(ZLIB_ROOT "${zlib_SOURCE_DIR}" CACHE STRING "" FORCE)
-set(ZLIB_USE_STATIC_LIBS ON CACHE BOOL "")
set(PNG_SHARED OFF CACHE BOOL "")
set(PNG_TESTS OFF CACHE BOOL "")
set(PNG_TOOLS OFF CACHE BOOL "")
@@ -80,7 +79,7 @@
include_directories("${libpng_BINARY_DIR}")
set(ANDROID ${PREV_ANDROID})
-set_target_properties(png_static ZLIB PROPERTIES AVIF_LOCAL ON)
+set_target_properties(png_static zlibstatic PROPERTIES AVIF_LOCAL ON)
add_library(PNG::PNG ALIAS png_static)
message(CHECK_PASS "complete")
diff --git a/ext/libjpeg.cmd b/ext/libjpeg.cmd
index 7d57601..f7c3ff1 100755
--- a/ext/libjpeg.cmd
+++ b/ext/libjpeg.cmd
@@ -4,7 +4,7 @@
: # The odd choice of comment style in this file is to try to share this script between *nix and win32.
-git clone -b 3.1.1 --depth 1 https://github.com/libjpeg-turbo/libjpeg-turbo.git
+git clone -b 3.1.3 --depth 1 https://github.com/libjpeg-turbo/libjpeg-turbo.git
# Set WITH_CRT_DLL to ON to compile libjpeg-turbo with /MD (use the DLL
# version of the run-time library) instead of /MT (use the static version
diff --git a/ext/libsharpyuv.cmd b/ext/libsharpyuv.cmd
index 4c7c348..304b925 100755
--- a/ext/libsharpyuv.cmd
+++ b/ext/libsharpyuv.cmd
@@ -9,7 +9,7 @@
: # "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat"
: # libsharpyuv is part of the libwebp repo.
-git clone -b v1.5.0 --depth 1 https://chromium.googlesource.com/webm/libwebp
+git clone -b v1.6.0 --depth 1 https://chromium.googlesource.com/webm/libwebp
cmake -G Ninja -S libwebp -B libwebp/build -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF -DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_LIBWEBPMUX=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF
cmake --build libwebp/build --config Release --target sharpyuv --parallel
diff --git a/ext/libxml2.cmd b/ext/libxml2.cmd
index 76e92fd..e564a31 100755
--- a/ext/libxml2.cmd
+++ b/ext/libxml2.cmd
@@ -5,9 +5,8 @@
: # libxml2 is released under the MIT License.
-git clone -b v2.14.4 --depth 1 https://github.com/GNOME/libxml2.git
+git clone -b v2.15.1 --depth 1 https://github.com/GNOME/libxml2.git
-cmake -G Ninja -S libxml2 -B libxml2/build.libavif/ -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=libxml2/install.libavif \
- -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_ZLIB=OFF -DLIBXML2_WITH_LZMA=OFF
+cmake -G Ninja -S libxml2 -B libxml2/build.libavif/ -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=libxml2/install.libavif -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_PROGRAMS=OFF -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_TESTS=OFF -DLIBXML2_WITH_ZLIB=OFF
cmake --build libxml2/build.libavif --config Release --parallel
cmake --install libxml2/build.libavif
diff --git a/ext/libyuv.cmd b/ext/libyuv.cmd
index 8c56c08..7bbe66e 100755
--- a/ext/libyuv.cmd
+++ b/ext/libyuv.cmd
@@ -17,7 +17,7 @@
: # When changing the commit below to a newer version of libyuv, it is best to make sure it is being used by chromium,
: # because the test suite of chromium provides additional test coverage of libyuv.
: # It can be looked up at https://source.chromium.org/chromium/chromium/src/+/main:DEPS?q=libyuv.
-git checkout 4db2af62d
+git checkout deeb764bb
cd ..
cmake -G Ninja -S libyuv -B libyuv/build -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON
diff --git a/ext/zlib.patch b/ext/zlib.patch
deleted file mode 100644
index 3722ef9..0000000
--- a/ext/zlib.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 15ceebe..03825a2 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1,23 +1,21 @@
--cmake_minimum_required(VERSION 2.4.4...3.15.0)
--set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
-+cmake_minimum_required(VERSION 3.15)
-
--project(zlib C)
--
--set(VERSION "1.3.1")
-+project(zlib VERSION 1.3.1 LANGUAGES C)
-
- option(ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" ON)
-
--set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
--set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
--set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
--set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages")
--set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
-+include(GNUInstallDirs)
-+set(INSTALL_BIN_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH "Installation directory for executables")
-+set(INSTALL_LIB_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation directory for libraries")
-+set(INSTALL_INC_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE PATH "Installation directory for headers")
-+set(INSTALL_MAN_DIR "${CMAKE_INSTALL_MANDIR}" CACHE PATH "Installation directory for manual pages")
-+set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_DATADIR}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
-
- include(CheckTypeSize)
- include(CheckFunctionExists)
- include(CheckIncludeFile)
- include(CheckCSourceCompiles)
--enable_testing()
-+include(CTest)
-
- check_include_file(sys/types.h HAVE_SYS_TYPES_H)
- check_include_file(stdint.h HAVE_STDINT_H)
-@@ -149,12 +147,21 @@ if(MINGW)
- set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
- endif(MINGW)
-
--add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
--target_include_directories(zlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
--add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
--target_include_directories(zlibstatic PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
--set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
--set_target_properties(zlib PROPERTIES SOVERSION 1)
-+if(BUILD_SHARED_LIBS)
-+ add_library(ZLIB SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
-+ set_target_properties(ZLIB PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
-+ set_target_properties(ZLIB PROPERTIES SOVERSION 1)
-+else()
-+ add_library(ZLIB STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
-+endif()
-+
-+target_include_directories(ZLIB PUBLIC
-+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
-+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
-+ $<INSTALL_INTERFACE:include>)
-+
-+add_library(ZLIB::ZLIB ALIAS ZLIB)
-+
-
- if(NOT CYGWIN)
- # This property causes shared libraries on Linux to have the full version
-@@ -164,26 +171,49 @@ if(NOT CYGWIN)
- #
- # This has no effect with MSVC, on that platform the version info for
- # the DLL comes from the resource file win32/zlib1.rc
-- set_target_properties(zlib PROPERTIES VERSION ${ZLIB_FULL_VERSION})
-+ set_target_properties(ZLIB PROPERTIES VERSION ${ZLIB_FULL_VERSION})
- endif()
-
- if(UNIX)
- # On unix-like platforms the library is almost always called libz
-- set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
-- if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX))
-- set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
-+ set_target_properties(ZLIB PROPERTIES OUTPUT_NAME z)
-+ if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX) AND BUILD_SHARED_LIBS)
-+ set_target_properties(ZLIB PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
- endif()
- elseif(BUILD_SHARED_LIBS AND WIN32)
- # Creates zlib1.dll when building shared library version
-- set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
-+ set_target_properties(ZLIB PROPERTIES SUFFIX "1.dll")
-+endif()
-+
-+if(NOT UNIX)
-+ if(BUILD_SHARED_LIBS)
-+ set_target_properties(ZLIB PROPERTIES OUTPUT_NAME zlib)
-+ else()
-+ set_target_properties(ZLIB PROPERTIES OUTPUT_NAME zlibstatic)
-+ endif()
- endif()
-
--if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
-- install(TARGETS zlib zlibstatic
-- RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
-- ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
-- LIBRARY DESTINATION "${INSTALL_LIB_DIR}" )
-+if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
-+ install(TARGETS ZLIB
-+ EXPORT ZLIBTargets
-+ RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
-+ ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
-+ LIBRARY DESTINATION "${INSTALL_LIB_DIR}")
-+ install(EXPORT ZLIBTargets
-+ NAMESPACE ZLIB::
-+ DESTINATION lib/cmake/ZLIB)
-+ include(CMakePackageConfigHelpers)
-+ write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfigVersion.cmake"
-+ VERSION ${PROJECT_VERSION}
-+ COMPATIBILITY SameMajorVersion)
-+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfig.cmake"
-+ "include(\"\${CMAKE_CURRENT_LIST_DIR}/ZLIBTargets.cmake\")"
-+ )
-+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfig.cmake"
-+ "${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfigVersion.cmake"
-+ DESTINATION lib/cmake/ZLIB)
- endif()
-+
- if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
- install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")
- endif()
-@@ -199,20 +229,20 @@ endif()
- #============================================================================
- if(ZLIB_BUILD_EXAMPLES)
- add_executable(example test/example.c)
-- target_link_libraries(example zlib)
-+ target_link_libraries(example ZLIB)
- add_test(example example)
-
- add_executable(minigzip test/minigzip.c)
-- target_link_libraries(minigzip zlib)
-+ target_link_libraries(minigzip ZLIB)
-
- if(HAVE_OFF64_T)
- add_executable(example64 test/example.c)
-- target_link_libraries(example64 zlib)
-+ target_link_libraries(example64 ZLIB)
- set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
- add_test(example64 example64)
-
- add_executable(minigzip64 test/minigzip.c)
-- target_link_libraries(minigzip64 zlib)
-+ target_link_libraries(minigzip64 ZLIB)
- set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
- endif()
- endif()
diff --git a/ext/zlibpng.cmd b/ext/zlibpng.cmd
index 64c7684..c6927df 100755
--- a/ext/zlibpng.cmd
+++ b/ext/zlibpng.cmd
@@ -4,8 +4,8 @@
: # The odd choice of comment style in this file is to try to share this script between *nix and win32.
-git clone -b v1.3.1 --depth 1 https://github.com/madler/zlib.git
+git clone -b v1.3.1.2 --depth 1 https://github.com/madler/zlib.git
cd zlib
git apply --ignore-whitespace ../zlib.patch
cd ..
-git clone -b v1.6.50 --depth 1 https://github.com/glennrp/libpng.git
+git clone -b v1.6.51 --depth 1 https://github.com/glennrp/libpng.git