[lipng/libpng-apng]Remove port libpng-apng and add apng as a feature with libpng. (#8622)

* [lipng/libpng-apng]Remove port libpng-apng and add apng as a feature with libpng.

* [libpng]Move feature apng operations before download libpng source.

* [libpng]Fix unset patch path.

* [libpng]Re-fix unset patch path.
This commit is contained in:
JackBoosY 2019-11-20 03:19:51 +08:00 committed by Robert Schumacher
parent a6f38607ba
commit ff6a725392
8 changed files with 34 additions and 118 deletions

View File

@ -1,5 +0,0 @@
Source: libpng-apng
Version: 1.6.37-1
Build-Depends: zlib
Homepage: https://github.com/glennrp/libpng
Description: libpng-apng is a library implementing an interface for reading and writing (A)PNG ((Animated) Portable Network Graphics) format files. This is backward compatible with the regular libpng, both in library usage and format.

View File

@ -1,84 +0,0 @@
include(vcpkg_common_functions)
set(LIBPNG_APNG_VERSION 1.6.36)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO glennrp/libpng
REF v${LIBPNG_APNG_VERSION}
SHA512 aeb00b48347c9e84d31995b3fe7e40580029734aa8103d774eee5745f5ca1fd1fd91a15f32d492277ab94346e4e7f731ee9bfea1783f930094f9f87eb3d9397d
HEAD_REF master
PATCHES
${CMAKE_CURRENT_LIST_DIR}/use-abort-on-all-platforms.patch
${CMAKE_CURRENT_LIST_DIR}/skip-install-symlink.patch
${CURRENT_BUILDTREES_DIR}/src/libpng-${LIBPNG_APNG_VERSION}-apng.patch
)
vcpkg_download_distfile(LIBPNG_APNG_PATCH_ARCHIVE
URLS "https://downloads.sourceforge.net/project/libpng-apng/libpng16/${LIBPNG_APNG_VERSION}/libpng-${LIBPNG_APNG_VERSION}-apng.patch.gz"
FILENAME "libpng-${LIBPNG_APNG_VERSION}-apng.patch.gz"
SHA512 8fa213204768b058459ffd5eae6b3661c3f185d3baf1913da4337e7b7855e567f2525e7f67411c32fa8cb177a5f93d538c3d0ce17a94d4aa71bd9cffabe8b311
)
vcpkg_find_acquire_program(7Z)
vcpkg_execute_required_process(
COMMAND ${7Z} x ${LIBPNG_APNG_PATCH_ARCHIVE} -aoa
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/src
LOGNAME extract-patch.log
)
find_program(GIT NAMES git git.cmd)
# sed and awk are installed with git but in a different directory
get_filename_component(GIT_EXE_PATH ${GIT} DIRECTORY)
set(AWK_EXE_PATH "${GIT_EXE_PATH}/../usr/bin")
set(ENV{PATH} "$ENV{PATH};${AWK_EXE_PATH}")
if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
set(PNG_STATIC_LIBS OFF)
set(PNG_SHARED_LIBS ON)
else()
set(PNG_STATIC_LIBS ON)
set(PNG_SHARED_LIBS OFF)
endif()
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
-DPNG_STATIC=${PNG_STATIC_LIBS}
-DPNG_SHARED=${PNG_SHARED_LIBS}
-DPNG_TESTS=OFF
-DPNG_PREFIX=a
-DSKIP_INSTALL_PROGRAMS=ON
-DSKIP_INSTALL_EXECUTABLES=ON
-DSKIP_INSTALL_FILES=ON
-DSKIP_INSTALL_SYMLINK=ON
OPTIONS_DEBUG
-DSKIP_INSTALL_HEADERS=ON
)
vcpkg_install_cmake()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/libpng16_static.lib)
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/libpng16_static.lib ${CURRENT_PACKAGES_DIR}/lib/libpng16.lib)
endif()
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16_staticd.lib)
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16_staticd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16d.lib)
endif()
endif()
# Remove CMake config files as they are incorrectly generated and everyone uses built-in FindPNG anyway.
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/libpng ${CURRENT_PACKAGES_DIR}/debug/lib/libpng)
file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libpng-apng)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/libpng-apng/LICENSE ${CURRENT_PACKAGES_DIR}/share/libpng-apng/copyright)
vcpkg_copy_pdbs()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/png)
endif()

View File

@ -1,4 +0,0 @@
The package libpng-apng is compatible with built-in CMake targets:
find_package(PNG REQUIRED)
target_link_libraries(main PRIVATE PNG::PNG)

View File

@ -1,17 +0,0 @@
diff --git a/pngpriv.h b/pngpriv.h
index fe3355d..5a049b5 100644
--- a/pngpriv.h
+++ b/pngpriv.h
@@ -556,11 +556,7 @@
/* Memory model/platform independent fns */
#ifndef PNG_ABORT
-# ifdef _WINDOWS_
-# define PNG_ABORT() ExitProcess(0)
-# else
-# define PNG_ABORT() abort()
-# endif
+# define PNG_ABORT() abort()
#endif
/* These macros may need to be architecture dependent. */

View File

@ -1,6 +0,0 @@
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16.a")
set(PNG_LIBRARY_RELEASE "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16.a" CACHE FILEPATH "")
elseif(EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16${CMAKE_SHARED_LIBRARY_SUFFIX}")
set(PNG_LIBRARY_RELEASE "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE FILEPATH "")
endif()
_find_package(${ARGS})

View File

@ -1,5 +1,8 @@
Source: libpng
Version: 1.6.37-4
Version: 1.6.37-5
Build-Depends: zlib
Homepage: https://github.com/glennrp/libpng
Description: libpng is a library implementing an interface for reading and writing PNG (Portable Network Graphics) format files.
Feature: apng
Description: This is backward compatible with the regular libpng, both in library usage and format.

View File

@ -1,14 +1,42 @@
include(vcpkg_common_functions)
set(LIBPNG_VER 1.6.37)
# Download the apng patch
set(LIBPNG_APNG_OPTION )
if ("apng" IN_LIST FEATURES)
set(LIBPNG_APG_PATCH_NAME libpng-${LIBPNG_VER}-apng.patch)
set(LIBPNG_APG_PATCH_PATH ${CURRENT_BUILDTREES_DIR}/src/${LIBPNG_APG_PATCH_NAME})
if (NOT EXISTS ${LIBPNG_APG_PATCH_PATH})
vcpkg_download_distfile(LIBPNG_APNG_PATCH_ARCHIVE
URLS "https://downloads.sourceforge.net/project/libpng-apng/libpng16/${LIBPNG_VER}/${LIBPNG_APG_PATCH_NAME}.gz"
FILENAME "${LIBPNG_APG_PATCH_NAME}.gz"
SHA512 226adcb3a8c60f2267fe2976ab531329ae43c2603dab4d0cf8f16217d64069936b879f3d6516b75d259c47d6f5c5b1f24f887602206c8e46abde0fb7f5c7946b
)
vcpkg_find_acquire_program(7Z)
vcpkg_execute_required_process(
COMMAND ${7Z} x ${LIBPNG_APNG_PATCH_ARCHIVE} -aoa
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/src
LOGNAME extract-patch.log
)
endif()
set(APNG_EXTRA_PATCH ${LIBPNG_APG_PATCH_PATH})
set(LIBPNG_APNG_OPTION "-DPNG_PREFIX=a")
endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO glennrp/libpng
REF v1.6.37
REF v${LIBPNG_VER}
SHA512 ccb3705c23b2724e86d072e2ac8cfc380f41fadfd6977a248d588a8ad57b6abe0e4155e525243011f245e98d9b7afbe2e8cc7fd4ff7d82fcefb40c0f48f88918
HEAD_REF master
PATCHES
use-abort-on-all-platforms.patch
fix-libm-unix.patch
${APNG_EXTRA_PATCH}
)
if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
@ -23,6 +51,7 @@ vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
${LIBPNG_APNG_OPTION}
-DPNG_STATIC=${PNG_STATIC_LIBS}
-DPNG_SHARED=${PNG_SHARED_LIBS}
-DPNG_TESTS=OFF