From b19e40f0b9069fe6cad851c18a86d8749d70f51f Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Fri, 2 Jan 2026 02:03:07 +0100
Subject: [PATCH] cmake: support embedding a static zlib library in libpng
---
CMakeLists.txt | 11 +++++------
external/libpng | 2 +-
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 446d1592..330117bb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -217,11 +217,7 @@ if(SDLIMAGE_VENDORED AND SDLIMAGE_PNG_VENDORED)
else()
set(SDLIMAGE_ZLIB_VENDORED OFF)
endif()
-if(SDLIMAGE_PNG_SHARED)
- set(SDLIMAGE_ZLIB_SHARED ON)
-else()
- set(SDLIMAGE_ZLIB_SHARED OFF)
-endif()
+cmake_dependent_option(SDLIMAGE_ZLIB_SHARED "Build zlib as a shared library" "${SDLIMAGE_PNG_SHARED}" SDLIMAGE_ZLIB_VENDORED OFF)
# Save BUILD_SHARED_LIBS variable
set(SDLIMAGE_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
@@ -455,12 +451,15 @@ if(SDLIMAGE_ZLIB)
if(NOT TARGET ZLIB::ZLIB)
add_library(ZLIB::ZLIB ALIAS ${ZLIB_LIBRARY})
endif()
+ if(NOT TARGET ZLIB::zlibstatic)
+ add_library(ZLIB::zlibstatic ALIAS ${ZLIB_LIBRARY})
+ endif()
# ZLIB_LIBRARIES variable is used by vendored libpng
set(ZLIB_LIBRARIES "${ZLIB_LIBRARY}")
# ZLIB_INCLUDE_DIRS variable is used by vendored libpng
set(ZLIB_INCLUDE_DIRS "${ZLIB_INCLUDE_DIR}")
target_include_directories(${ZLIB_LIBRARY} INTERFACE $<BUILD_INTERFACE:${ZLIB_INCLUDE_DIRS}>)
- if(SDLIMAGE_ZLIB_SHARED OR NOT SDLIMAGE_BUILD_SHARED_LIBS)
+ if(SDLIMAGE_ZLIB_SHARED OR SDLIMAGE_PNG AND NOT SDLIMAGE_PNG_SHARED)
list(APPEND INSTALL_EXTRA_TARGETS ${ZLIB_LIBRARY})
endif()
set_target_properties(${ZLIB_LIBRARY} PROPERTIES EXPORT_NAME external_zlib)
diff --git a/external/libpng b/external/libpng
index ddf24cd7..bed74863 160000
--- a/external/libpng
+++ b/external/libpng
@@ -1 +1 @@
-Subproject commit ddf24cd74f8213e7a057c23e8c5c2135e1d0fad9
+Subproject commit bed748633a146aa6cfea2a959f97e33e5d1451ca