libpng: properly fix zlib issue
authorRosen Penev <rosenp@gmail.com>
Tue, 15 Dec 2020 04:55:58 +0000 (20:55 -0800)
committerRosen Penev <rosenp@gmail.com>
Tue, 15 Dec 2020 05:00:00 +0000 (21:00 -0800)
The previous commit meant to avoid adding an LDFLAG but it just avoided
the issue. The real issue is PNG_BUILD_ZLIB being turned to ON. This
variable is for specifying a custom zlib location, which is not
necessary. Switching it to OFF calls find_package and links properly.

Backported two zlib related patches. The latter is a somewhat impoarant
fix.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
libs/libpng/Makefile
libs/libpng/patches/020-cmake-zlib.patch [new file with mode: 0644]
libs/libpng/patches/030-pkgconfig-zlib.patch [new file with mode: 0644]

index 9469c101d6e8267100edccec5fac55ff1ac7006b..43797e5a007f35d71916142031f5f72b9875eefd 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libpng
 PKG_VERSION:=1.6.37
-PKG_RELEASE:=9
+PKG_RELEASE:=10
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@SF/libpng
@@ -35,7 +35,7 @@ endef
 
 CMAKE_OPTIONS += \
        -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-       -DPNG_BUILD_ZLIB=ON \
+       -DPNG_BUILD_ZLIB=OFF \
        -DPNG_SHARED=ON \
        -DPNG_STATIC=ON \
        -DPNG_EXECUTABLES=OFF \
diff --git a/libs/libpng/patches/020-cmake-zlib.patch b/libs/libpng/patches/020-cmake-zlib.patch
new file mode 100644 (file)
index 0000000..e6731c8
--- /dev/null
@@ -0,0 +1,67 @@
+From 9f734b13f4ea062af98652c4c7678f667d2d85c7 Mon Sep 17 00:00:00 2001
+From: David Callu <callu.david@gmail.com>
+Date: Thu, 4 Jul 2019 15:15:53 +0200
+Subject: [PATCH] cmake: Use the correct ZLIB_* variable names
+
+ZLIB_LIBRARIES and ZLIB_INCLUDE_DIRS are the official cmake variable
+names.
+---
+ CMakeLists.txt | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -40,7 +40,7 @@ option(PNG_BUILD_ZLIB "Custom zlib Locat
+ if(NOT PNG_BUILD_ZLIB)
+   find_package(ZLIB REQUIRED)
+-  include_directories(${ZLIB_INCLUDE_DIR})
++  include_directories(${ZLIB_INCLUDE_DIRS})
+ endif()
+ if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU)
+@@ -523,7 +523,7 @@ if(PNG_DEBUG)
+ endif()
+ # NOW BUILD OUR TARGET
+-include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR})
++include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIRS})
+ unset(PNG_LIB_TARGETS)
+@@ -537,7 +537,7 @@ if(PNG_SHARED)
+     set_target_properties(png PROPERTIES PREFIX "lib")
+     set_target_properties(png PROPERTIES IMPORT_PREFIX "lib")
+   endif()
+-  target_link_libraries(png ${ZLIB_LIBRARY} ${M_LIBRARY})
++  target_link_libraries(png ${ZLIB_LIBRARIES} ${M_LIBRARY})
+   if(UNIX AND AWK)
+     if(HAVE_LD_VERSION_SCRIPT)
+@@ -572,7 +572,7 @@ if(PNG_STATIC)
+     # msvc does not append 'lib' - do it here to have consistent name
+     set_target_properties(png_static PROPERTIES PREFIX "lib")
+   endif()
+-  target_link_libraries(png_static ${ZLIB_LIBRARY} ${M_LIBRARY})
++  target_link_libraries(png_static ${ZLIB_LIBRARIES} ${M_LIBRARY})
+ endif()
+ if(PNG_FRAMEWORK)
+@@ -589,7 +589,7 @@ if(PNG_FRAMEWORK)
+     XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
+     PUBLIC_HEADER "${libpng_public_hdrs}"
+     OUTPUT_NAME png)
+-  target_link_libraries(png_framework ${ZLIB_LIBRARY} ${M_LIBRARY})
++  target_link_libraries(png_framework ${ZLIB_LIBRARIES} ${M_LIBRARY})
+ endif()
+ if(NOT PNG_LIB_TARGETS)
+@@ -754,7 +754,7 @@ if(PNG_SHARED AND PNG_EXECUTABLES)
+   set(PNG_BIN_TARGETS pngfix)
+   add_executable(png-fix-itxt ${png_fix_itxt_sources})
+-  target_link_libraries(png-fix-itxt ${ZLIB_LIBRARY} ${M_LIBRARY})
++  target_link_libraries(png-fix-itxt ${ZLIB_LIBRARIES} ${M_LIBRARY})
+   list(APPEND PNG_BIN_TARGETS png-fix-itxt)
+ endif()
diff --git a/libs/libpng/patches/030-pkgconfig-zlib.patch b/libs/libpng/patches/030-pkgconfig-zlib.patch
new file mode 100644 (file)
index 0000000..0b4fdfd
--- /dev/null
@@ -0,0 +1,22 @@
+From dbe3e0c43e549a1602286144d94b0666549b18e6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
+Date: Mon, 19 Mar 2018 12:41:47 -0300
+Subject: [PATCH] libpng.pc.in: zlib dependency is private
+
+zlib should be injected only when pkgconfig is ran with the --static
+option.
+---
+ libpng.pc.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/libpng.pc.in
++++ b/libpng.pc.in
+@@ -6,7 +6,7 @@ includedir=@includedir@/libpng@PNGLIB_MA
+ Name: libpng
+ Description: Loads and saves PNG files
+ Version: @PNGLIB_VERSION@
+-Requires: zlib
++Requires.private: zlib
+ Libs: -L${libdir} -lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@
+ Libs.private: @LIBS@
+ Cflags: -I${includedir}