mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-28 02:11:39 +08:00
Add libpng-apng as a new port (#2578)
* Add libpng-apng as a new ports definition * Update portfile to use 7Z to extract patch + fix others
This commit is contained in:
parent
14ef8e2fd2
commit
d60b48c32e
4
ports/libpng-apng/CONTROL
Normal file
4
ports/libpng-apng/CONTROL
Normal file
@ -0,0 +1,4 @@
|
||||
Source: libpng-apng
|
||||
Version: 1.6.34-2
|
||||
Build-Depends: zlib
|
||||
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.
|
78
ports/libpng-apng/portfile.cmake
Normal file
78
ports/libpng-apng/portfile.cmake
Normal file
@ -0,0 +1,78 @@
|
||||
include(vcpkg_common_functions)
|
||||
|
||||
set(LIBPNG_APNG_VERSION 1.6.34)
|
||||
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO glennrp/libpng
|
||||
REF v${LIBPNG_APNG_VERSION}
|
||||
SHA512 23b6112a1d16a34c8037d5c5812944d4385fc96ed819a22172776bdd5acd3a34e55f073b46087b77d1c12cecc68f9e8ba7754c86b5ab6ed3016063e1c795de7a
|
||||
HEAD_REF master
|
||||
)
|
||||
|
||||
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 0777b8e55aeee207ee92479f2258ef1f60f16d7951fdbc6d89a80ef533b86dadecd1ef659d6fe7602d8ea3a8e711a096b0f77ee09b993799b73dfffddfe5dd3c
|
||||
)
|
||||
|
||||
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}")
|
||||
|
||||
vcpkg_apply_patches(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
PATCHES
|
||||
${CMAKE_CURRENT_LIST_DIR}/use-abort-on-all-platforms.patch
|
||||
${CURRENT_BUILDTREES_DIR}/src/libpng-${LIBPNG_APNG_VERSION}-apng.patch
|
||||
)
|
||||
|
||||
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
|
||||
OPTIONS_DEBUG
|
||||
-DSKIP_INSTALL_HEADERS=ON
|
||||
)
|
||||
|
||||
vcpkg_install_cmake()
|
||||
|
||||
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/libpng16_static.lib ${CURRENT_PACKAGES_DIR}/lib/libpng16.lib)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16_staticd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16d.lib)
|
||||
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})
|
4
ports/libpng-apng/usage
Normal file
4
ports/libpng-apng/usage
Normal file
@ -0,0 +1,4 @@
|
||||
The package libpng-apng is compatible with built-in CMake targets:
|
||||
|
||||
find_package(PNG REQUIRED)
|
||||
target_link_libraries(main PRIVATE PNG::PNG)
|
17
ports/libpng-apng/use-abort-on-all-platforms.patch
Normal file
17
ports/libpng-apng/use-abort-on-all-platforms.patch
Normal file
@ -0,0 +1,17 @@
|
||||
diff --git a/pngpriv.h b/pngpriv.h
|
||||
index fe3355d..5a049b5 100644
|
||||
--- a/pngpriv.h
|
||||
+++ b/pngpriv.h
|
||||
@@ -457,11 +457,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. */
|
Loading…
Reference in New Issue
Block a user