diff --git a/Client/core/CFileFormatPng.cpp b/Client/core/CFileFormatPng.cpp index da2547eed4..ccf5b13b2c 100644 --- a/Client/core/CFileFormatPng.cpp +++ b/Client/core/CFileFormatPng.cpp @@ -10,7 +10,6 @@ #include "StdInc.h" #include -#include /////////////////////////////////////////////////////////////// // @@ -112,7 +111,15 @@ void ParseRGB(CBuffer& outImage, const png_structp& png_ptr, const png_infop& in /////////////////////////////////////////////////////////////// void ReadDataFromInputStream(png_structp png_ptr, png_bytep outBytes, png_size_t byteCountToRead) { - CBufferReadStream& stream = *(CBufferReadStream*)png_ptr->io_ptr; + if (!png_ptr) + return; + + void* ioPtr = png_get_io_ptr(png_ptr); + + if (!ioPtr) + return; + + CBufferReadStream& stream = *(CBufferReadStream*)ioPtr; stream.ReadBytes((byte*)outBytes, (size_t)byteCountToRead); } @@ -215,13 +222,19 @@ bool PngDecode(const void* pData, uint uiDataSize, CBuffer* pOutBuffer, uint& ui /////////////////////////////////////////////////////////////// void my_png_write_data(png_structp png_ptr, png_bytep data, png_size_t length) { - CBufferWriteStream* pStream = (CBufferWriteStream*)png_ptr->io_ptr; + if (!png_ptr) + return; + + void* io_ptr = png_get_io_ptr(png_ptr); - if (!pStream) + if (!io_ptr) return; - pStream->WriteBytes(data, length); + + CBufferWriteStream* stream = (CBufferWriteStream*)io_ptr; + stream->WriteBytes(data, length); } + /////////////////////////////////////////////////////////////// // // PngEncode diff --git a/vendor/libpng/.cmake-format.yaml b/vendor/libpng/.cmake-format.yaml index 81a5e26436..67c53d2db1 100644 --- a/vendor/libpng/.cmake-format.yaml +++ b/vendor/libpng/.cmake-format.yaml @@ -39,8 +39,8 @@ disabled_codes: [ # re-enable the "invalid variable name XXX" messages. "C0103", - # A custom command with one output doesn't really need a comment because - # the default "generating XXX" is a good message already. + # TODO: + # Add brief COMMENT arguments to the `add_custom_target` commands. "C0113", ] @@ -82,10 +82,10 @@ keyword_pattern: "[A-Z][0-9A-Z_]+" # before considering the loop a parser max_conditionals_custom_parser: 2 -# Require at least this many newlines between statements +# Require at least this many newlines between statements; +# require no more than this many newlines between statements; +# etc. min_statement_spacing: 1 - -# Require no more than this many newlines between statements max_statement_spacing: 2 max_returns: 6 max_branches: 12 diff --git a/vendor/libpng/.editorconfig b/vendor/libpng/.editorconfig index 4181a3796b..8b1466b1d9 100644 --- a/vendor/libpng/.editorconfig +++ b/vendor/libpng/.editorconfig @@ -1,55 +1,9 @@ # https://editorconfig.org -root = true +root = false -[*] -charset = utf-8 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.txt] -indent_size = unset -indent_style = space - -[*.[chS]] -indent_size = 3 -indent_style = space -max_doc_length = 80 -max_line_length = 80 - -[*.dfa] -indent_size = 3 -indent_style = space -max_doc_length = 80 -max_line_length = 80 - -[*.awk] -indent_size = 3 -indent_style = space -max_doc_length = 80 -max_line_length = 100 - -[*.cmake] -indent_size = 2 -indent_style = space -max_doc_length = 80 -max_line_length = 100 - -[*.sh] -indent_size = 4 -indent_style = space -max_doc_length = 100 -max_line_length = 100 - -[{Makefile.in,aclocal.m4,ltmain.sh}] +[*.[ch]] indent_size = unset indent_style = unset -insert_final_newline = unset max_doc_length = unset max_line_length = unset -trim_trailing_whitespace = unset - -[COMMIT_EDITMSG] -indent_style = space -max_doc_length = unset -max_line_length = 72 diff --git a/vendor/libpng/.github/workflows/lint.yml b/vendor/libpng/.github/workflows/lint.yml index ddc483d999..65a63b41a6 100644 --- a/vendor/libpng/.github/workflows/lint.yml +++ b/vendor/libpng/.github/workflows/lint.yml @@ -23,6 +23,8 @@ jobs: restore-keys: ${{ runner.os }}-pip- - name: Install yamllint run: pip install yamllint + - name: Install editorconfig-checker + uses: editorconfig-checker/action-editorconfig-checker@main - name: Check out the code uses: actions/checkout@v4 - name: Run the linting script diff --git a/vendor/libpng/.gitignore b/vendor/libpng/.gitignore index d1031d4e32..c3e7248d88 100644 --- a/vendor/libpng/.gitignore +++ b/vendor/libpng/.gitignore @@ -122,6 +122,7 @@ ipch/ *.out *out.png [._]deps/ +[._]libs/ .dirstamp /Makefile /autom4te.cache/ @@ -138,17 +139,21 @@ ipch/ CMake*.json !CMakePresets.json CMakeLists.txt.* +pnglibconf.[ch] pnglibconf.dfn pnglibconf.pre pngprefix.h -# Libpng test programs -png-fix-itxt -pngcp -pngfix -pngimage -pngstest -pngtest -pngunknown -pngvalid -timepng +# Libpng test programs, scripts and artifacts +/test-suite.log +/tests/*.log +/tests/*.trs +/png-fix-itxt +/pngcp +/pngfix +/pngimage +/pngstest +/pngtest +/pngunknown +/pngvalid +/timepng diff --git a/vendor/libpng/.travis.yml b/vendor/libpng/.travis.yml deleted file mode 100644 index b93aa77d93..0000000000 --- a/vendor/libpng/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -branches: - except: - - /libpng[0-1][0-8]/ - - /v[0-1][.][0-8][.][0-9]+/ - -language: c - -os: - - freebsd - - linux - - osx - -env: - - AUTOMATION=cmake - - AUTOMATION=configure - - AUTOMATION=makefiles - -before_script: - - 'if test "$TRAVIS_OS_NAME" = "linux"; then export CI_CC="gcc"; else export CI_CC="clang"; fi' - - 'if test "$TRAVIS_OS_NAME" = "osx"; then export CI_CMAKE_GENERATOR="Xcode"; fi' - - 'if test "$TRAVIS_OS_NAME" != "osx"; then export CI_SANITIZERS="address,undefined"; fi' - - 'export CI_MAKEFILES="scripts/makefile.$CI_CC scripts/makefile.std"' - - 'export CI_MAKE_FLAGS=-j2' - - 'export CI_CMAKE_BUILD_FLAGS=-j2' - - 'export CI_CTEST_FLAGS=-j2' - -script: - - './ci/ci_verify_$AUTOMATION.sh' diff --git a/vendor/libpng/ANNOUNCE b/vendor/libpng/ANNOUNCE index 603b2df48e..516e078082 100644 --- a/vendor/libpng/ANNOUNCE +++ b/vendor/libpng/ANNOUNCE @@ -1,5 +1,5 @@ -libpng 1.6.47 - February 18, 2025 -================================= +libpng 1.6.50 - July 1, 2025 +============================ This is a public release of libpng, intended for use in production code. @@ -9,13 +9,13 @@ Files available for download Source files with LF line endings (for Unix/Linux): - * libpng-1.6.47.tar.xz (LZMA-compressed, recommended) - * libpng-1.6.47.tar.gz (deflate-compressed) + * libpng-1.6.50.tar.xz (LZMA-compressed, recommended) + * libpng-1.6.50.tar.gz (deflate-compressed) Source files with CRLF line endings (for Windows): - * lpng1647.7z (LZMA-compressed, recommended) - * lpng1647.zip (deflate-compressed) + * lpng1650.7z (LZMA-compressed, recommended) + * lpng1650.zip (deflate-compressed) Other information: @@ -25,19 +25,18 @@ Other information: * TRADEMARK.md -Changes from version 1.6.46 to version 1.6.47 +Changes from version 1.6.49 to version 1.6.50 --------------------------------------------- - * Modified the behaviour of colorspace chunks in order to adhere - to the new precedence rules formulated in the latest draft of - the PNG Specification. + * Improved the detection of the RVV Extension on the RISC-V platform. + (Contributed by Filip Wasil) + * Replaced inline ASM with C intrinsics in the RVV code. + (Contributed by Filip Wasil) + * Fixed a decoder defect in which unknown chunks trailing IDAT, set + to go through the unknown chunk handler, incorrectly triggered + out-of-place IEND errors. (Contributed by John Bowler) - * Fixed a latent bug in `png_write_iCCP`. - This would have been a read-beyond-end-of-malloc vulnerability, - introduced early in the libpng-1.6.0 development, yet (fortunately!) - it was inaccessible before the above-mentioned modification of the - colorspace precedence rules, due to pre-existing colorspace checks. - (Reported by Bob Friesenhahn; fixed by John Bowler) + * Fixed the CMake file for cross-platform builds that require `libm`. Send comments/corrections/commendations to png-mng-implement at lists.sf.net. diff --git a/vendor/libpng/AUTHORS b/vendor/libpng/AUTHORS index f30a4ee192..60355f32c8 100644 --- a/vendor/libpng/AUTHORS +++ b/vendor/libpng/AUTHORS @@ -20,6 +20,7 @@ Authors, for copyright and licensing purposes. * Lucas Chollet * Magnus Holmgren * Mandar Sahastrabuddhe + * Manfred Schlaegl * Mans Rullgard * Matt Sarett * Mike Klein @@ -40,8 +41,9 @@ Authors, for copyright and licensing purposes. - Zixu Wang (王子旭) * Arm Holdings - Richard Townsend - * Google Inc. + * Google LLC - Dan Field + - Dragoș Tiselice - Leon Scroggins III - Matt Sarett - Mike Klein @@ -51,6 +53,8 @@ Authors, for copyright and licensing purposes. - GuXiWei (顾希伟) - JinBo (金波) - ZhangLixia (张利霞) + * Samsung Group + - Filip Wasil The build projects, the build scripts, the test scripts, and other files in the "projects", "scripts" and "tests" directories, have diff --git a/vendor/libpng/CHANGES b/vendor/libpng/CHANGES index 834b5e1927..b6499b1f34 100644 --- a/vendor/libpng/CHANGES +++ b/vendor/libpng/CHANGES @@ -6251,6 +6251,33 @@ Version 1.6.47 [February 18, 2025] colorspace precedence rules, due to pre-existing colorspace checks. (Reported by Bob Friesenhahn; fixed by John Bowler) +Version 1.6.48 [April 30, 2025] + Fixed the floating-point version of the mDCv setter `png_set_mDCv`. + (Reported by Mohit Bakshi; fixed by John Bowler) + Added #error directives to discourage the inclusion of private + libpng implementation header files in PNG-supporting applications. + Added the CMake build option `PNG_LIBCONF_HEADER`, to be used as an + alternative to `DFA_XTRA`. + Removed the Travis CI configuration files, with heartfelt thanks for + their generous support of our project over the past five years! + +Version 1.6.49 [June 12, 2025] + Added SIMD-optimized code for the RISC-V Vector Extension (RVV). + (Contributed by Manfred Schlaegl, Dragos Tiselice and Filip Wasil) + Added various fixes and improvements to the build scripts and to + the sample code. + +Version 1.6.50 [July 1, 2025] + Improved the detection of the RVV Extension on the RISC-V platform. + (Contributed by Filip Wasil) + Replaced inline ASM with C intrinsics in the RVV code. + (Contributed by Filip Wasil) + Fixed a decoder defect in which unknown chunks trailing IDAT, set + to go through the unknown chunk handler, incorrectly triggered + out-of-place IEND errors. + (Contributed by John Bowler) + Fixed the CMake file for cross-platform builds that require `libm`. + Send comments/corrections/commendations to png-mng-implement at lists.sf.net. Subscription is required; visit https://lists.sourceforge.net/lists/listinfo/png-mng-implement diff --git a/vendor/libpng/CMakeLists.txt b/vendor/libpng/CMakeLists.txt index 4a97bd50e4..d91e3a6c3b 100644 --- a/vendor/libpng/CMakeLists.txt +++ b/vendor/libpng/CMakeLists.txt @@ -14,11 +14,11 @@ # # SPDX-License-Identifier: libpng-2.0 -cmake_minimum_required(VERSION 3.14) +cmake_minimum_required(VERSION 3.14...4.0) set(PNGLIB_MAJOR 1) set(PNGLIB_MINOR 6) -set(PNGLIB_REVISION 47) +set(PNGLIB_REVISION 50) set(PNGLIB_SUBREVISION 0) #set(PNGLIB_SUBREVISION "git") set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_REVISION}) @@ -30,29 +30,55 @@ project(libpng LANGUAGES C ASM) include(CheckCSourceCompiles) +include(CheckLibraryExists) include(GNUInstallDirs) # Allow the users to specify an application-specific API prefix for libpng # vendoring purposes. A standard libpng build should have no such prefix. -set(PNG_PREFIX "" +set(PNG_PREFIX + "" CACHE STRING "Prefix to prepend to the API function names") # Allow the users to override the postfix appended to debug library file names. # Previously, we used to set CMAKE_DEBUG_POSTFIX globally. That variable should # not be cached, however, because doing so would affect all projects processed # after libpng, in unexpected and undesirable ways. -set(PNG_DEBUG_POSTFIX "d" +set(PNG_DEBUG_POSTFIX + "d" CACHE STRING "Postfix to append to library file names under the Debug configuration") # Allow the users to import their own extra configuration settings. -set(DFA_XTRA "" - CACHE FILEPATH "File containing extra configuration settings") +# Those settings can be either passed via DFA_XTRA if they are in DFA form +# (such as "pngusr.dfa"), or via PNG_LIBCONF_HEADER if they are in prebuilt +# header file form (such as "scripts/pnglibconf.h.prebuilt"), but not both. +# For platforms such as Android or iOS, or in certain cross-platform build +# scenarios, having a valid PNG_LIBCONF_HEADER is mandatory. +set(DFA_XTRA + "" + CACHE FILEPATH "DFA file containing customized build configuration settings for libpng") +set(PNG_LIBCONF_HEADER + "" + CACHE FILEPATH "C header file containing customized build configuration settings for libpng") +set(PNG_LIBCONF_HEADER_PREBUILT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt") +if(ANDROID OR IOS) + set(PNG_LIBCONF_HEADER "${PNG_LIBCONF_HEADER_PREBUILT}") +endif() +if((NOT DFA_XTRA STREQUAL "") AND (NOT PNG_LIBCONF_HEADER STREQUAL "")) + message(SEND_ERROR "The options DFA_XTRA=\"${DFA_XTRA}\" " + "and PNG_LIBCONF_HEADER=\"${PNG_LIBCONF_HEADER}\" " + "are mutually exclusive") +endif() # Allow the users to switch on/off various library build types. option(PNG_SHARED "Build libpng as a shared library" ON) option(PNG_STATIC "Build libpng as a static library" ON) if(APPLE) option(PNG_FRAMEWORK "Build libpng as a framework bundle" ON) +else() + option(PNG_FRAMEWORK "Build libpng as a framework bundle (not available on this platform)" OFF) +endif() +if(NOT APPLE AND PNG_FRAMEWORK) + message(SEND_ERROR "The option PNG_FRAMEWORK should not be set on this platform") endif() # Allow the users to switch on/off the auxiliary build and test artifacts. @@ -74,14 +100,13 @@ option(PNG_EXECUTABLES "[Deprecated; please use PNG_TOOLS]" ON) if(NOT PNG_EXECUTABLES) message(DEPRECATION "The option PNG_EXECUTABLES has been deprecated in favour of PNG_TOOLS") if(PNG_TOOLS) - message(AUTHOR_WARNING - "Setting PNG_TOOLS to ${PNG_EXECUTABLES}, to stay compatible with PNG_EXECUTABLES") + message(AUTHOR_WARNING "Setting PNG_TOOLS to ${PNG_EXECUTABLES}, " + "to stay compatible with PNG_EXECUTABLES") set(PNG_TOOLS "${PNG_EXECUTABLES}") endif() endif() -# Allow the users to configure various compilation options. -option(PNG_DEBUG "Enable debug output" OFF) +# Allow the users to switch on/off the use of hardware (SIMD) optimized code. option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON) # Initialize and show the target architecture variable PNG_TARGET_ARCHITECTURE. @@ -104,29 +129,32 @@ message(STATUS "Building for target architecture: ${PNG_TARGET_ARCHITECTURE}") option(PNG_BUILD_ZLIB "[Deprecated; please use ZLIB_ROOT]" OFF) if(PNG_BUILD_ZLIB) if("x${ZLIB_ROOT}" STREQUAL "x") - message(SEND_ERROR - "The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; " - "please use ZLIB_ROOT instead") + message(SEND_ERROR "The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; " + "please use ZLIB_ROOT instead") else() - message(SEND_ERROR - "The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; " - "using ZLIB_ROOT=\"${ZLIB_ROOT}\"") + message(SEND_ERROR "The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; " + "using ZLIB_ROOT=\"${ZLIB_ROOT}\"") endif() endif() +# Find the zlib library. find_package(ZLIB REQUIRED) +set(PNG_LINK_LIBRARIES ZLIB::ZLIB) -if(UNIX - AND NOT (APPLE OR BEOS OR HAIKU) - AND NOT EMSCRIPTEN) - find_library(M_LIBRARY m) - if(M_LIBRARY) - set(M_LIBRARY m) - else() - set(M_LIBRARY "") - endif() -else() - # libm is not available or not needed. +# Find the math library (unless we already know it's not available or +# not needed). +if(UNIX AND NOT (APPLE OR BEOS OR HAIKU OR EMSCRIPTEN)) + check_library_exists(m pow "" PNG_HAVE_LIBM_POW) +endif() +if(PNG_HAVE_LIBM_POW) + list(APPEND PNG_LINK_LIBRARIES m) +endif() + +# Silence function deprecation warnings on the Windows compilers that might +# use the MSVC Runtime library headers. +if(WIN32 AND (CMAKE_C_COMPILER_ID MATCHES "MSVC|Intel|Clang")) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) + add_definitions(-D_CRT_SECURE_NO_DEPRECATE) endif() if(PNG_HARDWARE_OPTIMIZATIONS) @@ -135,15 +163,17 @@ if(PNG_HARDWARE_OPTIMIZATIONS) if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)") if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm64|aarch64)") set(PNG_ARM_NEON_POSSIBLE_VALUES on off) - set(PNG_ARM_NEON "on" + set(PNG_ARM_NEON + "on" CACHE STRING "Enable ARM NEON optimizations: on|off; on is default") else() set(PNG_ARM_NEON_POSSIBLE_VALUES check on off) - set(PNG_ARM_NEON "off" + set(PNG_ARM_NEON + "off" CACHE STRING "Enable ARM NEON optimizations: check|on|off; off is default") endif() set_property(CACHE PNG_ARM_NEON - PROPERTY STRINGS ${PNG_ARM_NEON_POSSIBLE_VALUES}) + PROPERTY STRINGS ${PNG_ARM_NEON_POSSIBLE_VALUES}) list(FIND PNG_ARM_NEON_POSSIBLE_VALUES ${PNG_ARM_NEON} index) if(index EQUAL -1) message(FATAL_ERROR "PNG_ARM_NEON must be one of [${PNG_ARM_NEON_POSSIBLE_VALUES}]") @@ -165,10 +195,11 @@ if(PNG_HARDWARE_OPTIMIZATIONS) # Set definitions and sources for PowerPC. if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)") set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off) - set(PNG_POWERPC_VSX "on" + set(PNG_POWERPC_VSX + "on" CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default") set_property(CACHE PNG_POWERPC_VSX - PROPERTY STRINGS ${PNG_POWERPC_VSX_POSSIBLE_VALUES}) + PROPERTY STRINGS ${PNG_POWERPC_VSX_POSSIBLE_VALUES}) list(FIND PNG_POWERPC_VSX_POSSIBLE_VALUES ${PNG_POWERPC_VSX} index) if(index EQUAL -1) message(FATAL_ERROR "PNG_POWERPC_VSX must be one of [${PNG_POWERPC_VSX_POSSIBLE_VALUES}]") @@ -187,10 +218,11 @@ if(PNG_HARDWARE_OPTIMIZATIONS) # Set definitions and sources for Intel. if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)") set(PNG_INTEL_SSE_POSSIBLE_VALUES on off) - set(PNG_INTEL_SSE "on" + set(PNG_INTEL_SSE + "on" CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default") set_property(CACHE PNG_INTEL_SSE - PROPERTY STRINGS ${PNG_INTEL_SSE_POSSIBLE_VALUES}) + PROPERTY STRINGS ${PNG_INTEL_SSE_POSSIBLE_VALUES}) list(FIND PNG_INTEL_SSE_POSSIBLE_VALUES ${PNG_INTEL_SSE} index) if(index EQUAL -1) message(FATAL_ERROR "PNG_INTEL_SSE must be one of [${PNG_INTEL_SSE_POSSIBLE_VALUES}]") @@ -209,20 +241,22 @@ if(PNG_HARDWARE_OPTIMIZATIONS) # Set definitions and sources for MIPS. if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)") set(PNG_MIPS_MSA_POSSIBLE_VALUES on off) - set(PNG_MIPS_MSA "on" + set(PNG_MIPS_MSA + "on" CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default") set_property(CACHE PNG_MIPS_MSA - PROPERTY STRINGS ${PNG_MIPS_MSA_POSSIBLE_VALUES}) + PROPERTY STRINGS ${PNG_MIPS_MSA_POSSIBLE_VALUES}) list(FIND PNG_MIPS_MSA_POSSIBLE_VALUES ${PNG_MIPS_MSA} index_msa) if(index_msa EQUAL -1) message(FATAL_ERROR "PNG_MIPS_MSA must be one of [${PNG_MIPS_MSA_POSSIBLE_VALUES}]") endif() set(PNG_MIPS_MMI_POSSIBLE_VALUES on off) - set(PNG_MIPS_MMI "on" + set(PNG_MIPS_MMI + "on" CACHE STRING "Enable MIPS_MMI optimizations: on|off; on is default") set_property(CACHE PNG_MIPS_MMI - PROPERTY STRINGS ${PNG_MIPS_MMI_POSSIBLE_VALUES}) + PROPERTY STRINGS ${PNG_MIPS_MMI_POSSIBLE_VALUES}) list(FIND PNG_MIPS_MMI_POSSIBLE_VALUES ${PNG_MIPS_MMI} index_mmi) if(index_mmi EQUAL -1) message(FATAL_ERROR "PNG_MIPS_MMI must be one of [${PNG_MIPS_MMI_POSSIBLE_VALUES}]") @@ -257,31 +291,74 @@ if(PNG_HARDWARE_OPTIMIZATIONS) if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)") include(CheckCCompilerFlag) set(PNG_LOONGARCH_LSX_POSSIBLE_VALUES on off) - set(PNG_LOONGARCH_LSX "on" + set(PNG_LOONGARCH_LSX + "on" CACHE STRING "Enable LOONGARCH_LSX optimizations: on|off; on is default") set_property(CACHE PNG_LOONGARCH_LSX - PROPERTY STRINGS ${PNG_LOONGARCH_LSX_POSSIBLE_VALUES}) + PROPERTY STRINGS ${PNG_LOONGARCH_LSX_POSSIBLE_VALUES}) list(FIND PNG_LOONGARCH_LSX_POSSIBLE_VALUES ${PNG_LOONGARCH_LSX} index) if(index EQUAL -1) message(FATAL_ERROR "PNG_LOONGARCH_LSX must be one of [${PNG_LOONGARCH_LSX_POSSIBLE_VALUES}]") elseif(NOT PNG_LOONGARCH_LSX STREQUAL "off") - CHECK_C_COMPILER_FLAG("-mlsx" COMPILER_SUPPORTS_LSX) + check_c_compiler_flag("-mlsx" COMPILER_SUPPORTS_LSX) if(COMPILER_SUPPORTS_LSX) set(libpng_loongarch_sources loongarch/loongarch_lsx_init.c loongarch/filter_lsx_intrinsics.c) set_source_files_properties(${libpng_loongarch_sources} - PROPERTIES - COMPILE_FLAGS "-mlsx") + PROPERTIES COMPILE_FLAGS "-mlsx") add_definitions(-DPNG_LOONGARCH_LSX_OPT=1) else() - message(FATAL_ERROR "Compiler does not support -mlsx option") + message(FATAL_ERROR "This compiler does not support the -mlsx option") endif() else() add_definitions(-DPNG_LOONGARCH_LSX_OPT=0) endif() endif() + # Set definitions and sources for RISC-V. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(riscv)") + include(CheckCCompilerFlag) + set(PNG_RISCV_RVV_POSSIBLE_VALUES on off) + set(PNG_RISCV_RVV "off" + CACHE STRING "Enable RISC-V Vector optimizations: on|off; off is default") + set_property(CACHE PNG_RISCV_RVV + PROPERTY STRINGS ${PNG_RISCV_RVV_POSSIBLE_VALUES}) + list(FIND PNG_RISCV_RVV_POSSIBLE_VALUES ${PNG_RISCV_RVV} index) + if(index EQUAL -1) + message(FATAL_ERROR "PNG_RISCV_RVV must be one of [${PNG_RISCV_RVV_POSSIBLE_VALUES}]") + elseif(NOT PNG_RISCV_RVV STREQUAL "off") + + check_c_source_compiles(" + #include + #include + #ifndef COMPAT_HWCAP_ISA_V /* added in linux-6.5 */ + #error \"COMPAT_HWCAP_ISA_V is not available\" + #endif + int main() { + const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f }; + uint64_t ptr[2] = {0x0908060504020100, 0xFFFFFFFF0E0D0C0A}; + vuint8m1_t a = __riscv_vreinterpret_v_u64m1_u8m1(__riscv_vle64_v_u64m1(ptr, 2)); + vfloat32m1_t val = __riscv_vle32_v_f32m1((const float*)(src), 4); + return (int)__riscv_vfmv_f_s_f32m1_f32(val); + }" COMPILER_SUPPORTS_RVV) + + if(NOT COMPILER_SUPPORTS_RVV) + message(FATAL_ERROR "Compiler does not support RISC-V Vector extension or its unable to detect it") + endif() + set(libpng_riscv_sources + riscv/filter_rvv_intrinsics.c + riscv/riscv_init.c) + if(PNG_RISCV_RVV STREQUAL "on") + add_definitions(-DPNG_RISCV_RVV_OPT=2) + else() + add_definitions(-DPNG_RISCV_RVV_OPT=0) + endif() + else() + add_definitions(-DPNG_RISCV_RVV_OPT=0) + endif() + endif() + else(PNG_HARDWARE_OPTIMIZATIONS) # Set definitions and sources for ARM. @@ -309,6 +386,11 @@ else(PNG_HARDWARE_OPTIMIZATIONS) add_definitions(-DPNG_LOONGARCH_LSX_OPT=0) endif() + # Set definitions and sources for RISC-V. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(riscv)") + add_definitions(-DPNG_RISCV_RVV_OPT=0) + endif() + endif(PNG_HARDWARE_OPTIMIZATIONS) option(ld-version-script "Enable linker version script" ON) @@ -324,7 +406,8 @@ VERS_2 { global: sym2; main; } VERS_1; # Solaris, because of an incompatibility with the Solaris link editor. list(APPEND CMAKE_REQUIRED_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS}) endif() - list(APPEND CMAKE_REQUIRED_FLAGS "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/conftest.map'") + list(APPEND CMAKE_REQUIRED_FLAGS + "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/conftest.map'") check_c_source_compiles(" void sym1(void) {} void sym2(void) {} @@ -348,54 +431,72 @@ int main(void) { return 0; } file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map") endif() -# Find an AWK language processor. -# Start with specific AWK implementations like gawk and nawk, which are -# known to work with our scripts, then fall back to the system awk. -find_program(AWK NAMES gawk nawk awk) -if(AWK) - message(STATUS "Found AWK program: ${AWK}") -else() - message(STATUS "Could not find an AWK-compatible program") +if(PNG_LIBCONF_HEADER STREQUAL "") + # No custom configuration header file has been specified, so we build it + # from our DFA files and (optionally) out of the user-supplied DFA file. + # Find an AWK language processor. + # Start with specific AWK implementations like gawk and nawk, which are + # known to work with our scripts, then fall back to the system awk. + find_program(AWK NAMES gawk nawk awk) + if(AWK) + message(STATUS "Found AWK program: ${AWK}") + else() + message(STATUS "Could not find an AWK-compatible program") + endif() endif() -if(NOT AWK OR (ANDROID OR IOS)) - # No awk available to generate sources; use pre-built pnglibconf.h - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt - ${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h) +# Include the internal module PNGCheckLibconf.cmake +include("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGCheckLibconf.cmake") + +if(NOT PNG_LIBCONF_HEADER STREQUAL "") + # Configure libpng with the user-defined pnglibconf.h file. + png_check_libconf(HEADER "${PNG_LIBCONF_HEADER}") + configure_file("${PNG_LIBCONF_HEADER}" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" + @ONLY) + add_custom_target(png_genfiles) +elseif(NOT AWK) + # No AWK program available to generate pnglibconf.h. + # Configure libpng with pnglibconf.h.prebuilt. + png_check_libconf(HEADER "${PNG_LIBCONF_HEADER_PREBUILT}") + configure_file("${PNG_LIBCONF_HEADER_PREBUILT}" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" + @ONLY) add_custom_target(png_genfiles) else() - # Include the internal module PNGGenConfig.cmake - include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGGenConfig.cmake) + png_check_libconf(DFA_XTRA "${DFA_XTRA}") - # Copy the awk scripts, converting their line endings to Unix (LF) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk - ${CMAKE_CURRENT_BINARY_DIR}/scripts/checksym.awk + # Include the internal module PNGGenConfig.cmake + include("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGGenConfig.cmake") + + # Work around a limitation of various Windows AWK programs that are + # unable to process CRLF-terminated AWK scripts. + # Copy these AWK scripts to a temporary location, converting their + # line endings from Windows (CRLF) to Unix (LF) at the destination. + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/checksym.awk" @ONLY NEWLINE_STYLE LF) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk - ${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk" @ONLY NEWLINE_STYLE LF) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/dfn.awk - ${CMAKE_CURRENT_BINARY_DIR}/scripts/dfn.awk + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/dfn.awk" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/dfn.awk" @ONLY NEWLINE_STYLE LF) # Generate scripts/pnglibconf.h - generate_source(OUTPUT "scripts/pnglibconf.c" + generate_source(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa" "${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk" "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h") - add_custom_target(png_scripts_pnglibconf_c - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c") # Generate pnglibconf.c - generate_source(OUTPUT "pnglibconf.c" + generate_source(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa" "${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk" "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h") - add_custom_target(pnglibconf_c - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c") if(PNG_PREFIX) set(PNGLIBCONF_H_EXTRA_DEPENDS @@ -406,80 +507,53 @@ else() endif() generate_out(INPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" - DEPENDS pnglibconf_c) - add_custom_target(pnglibconf_out - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out") + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out") # Generate pnglibconf.h - generate_source(OUTPUT "pnglibconf.h" - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" pnglibconf_out + generate_source(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" ${PNGLIBCONF_H_EXTRA_DEPENDS}) - add_custom_target(pnglibconf_h - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/intprefix.c" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" pnglibconf_h) - add_custom_target(png_scripts_intprefix_out - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out") + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/prefix.c" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" pnglibconf_out) - add_custom_target(png_scripts_prefix_out - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out") + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out") # Generate pngprefix.h - generate_source(OUTPUT "pngprefix.h" + generate_source(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h" DEPENDS ${PNGPREFIX_H_EXTRA_DEPENDS}) - add_custom_target(pngprefix_h - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h") generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sym.c" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" pnglibconf_h) - add_custom_target(png_scripts_sym_out - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out") + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.c" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt") - add_custom_target(png_scripts_symbols_out - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out") generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/vers.c" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" pnglibconf_h) - add_custom_target(png_scripts_vers_out - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out") + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") generate_chk(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" - DEPENDS png_scripts_symbols_out - "${CMAKE_CURRENT_BINARY_DIR}/scripts/checksym.awk" + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/checksym.awk" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.def") - add_custom_target(png_scripts_symbols_chk - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk") - generate_copy(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym" - DEPENDS png_scripts_sym_out) - generate_copy(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers" - DEPENDS png_scripts_vers_out) + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") - add_custom_target(png_genvers - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") - add_custom_target(png_gensym - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") + generate_copy(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") add_custom_target(png_genprebuilt COMMAND "${CMAKE_COMMAND}" @@ -489,20 +563,20 @@ else() # A single target handles generation of all generated files. add_custom_target(png_genfiles - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym" png_gensym - "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers" png_genvers - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" pnglibconf_c - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" pnglibconf_h - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" pnglibconf_out - "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h" pngprefix_h - "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" png_scripts_intprefix_out - "${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c" png_scripts_pnglibconf_c - "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" png_scripts_prefix_out - "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" png_scripts_sym_out - "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" png_scripts_symbols_chk - "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" png_scripts_symbols_out - "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" png_scripts_vers_out) -endif(NOT AWK OR (ANDROID OR IOS)) + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym" + "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" + "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out") +endif() # List the source code files. set(libpng_public_hdrs @@ -516,7 +590,7 @@ set(libpng_private_hdrs pnginfo.h pngstruct.h ) -if(AWK AND NOT (ANDROID OR IOS)) +if(AWK) list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h") endif() set(libpng_sources @@ -542,7 +616,9 @@ set(libpng_sources ${libpng_mips_sources} ${libpng_powerpc_sources} ${libpng_loongarch_sources} + ${libpng_riscv_sources} ) + set(pngtest_sources pngtest.c ) @@ -565,15 +641,6 @@ set(png_fix_itxt_sources contrib/tools/png-fix-itxt.c ) -if(MSVC OR (WIN32 AND (CMAKE_C_COMPILER_ID MATCHES "Clang"))) - add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) - add_definitions(-D_CRT_SECURE_NO_DEPRECATE) -endif() - -if(PNG_DEBUG) - add_definitions(-DPNG_DEBUG) -endif() - # Now build our targets. # Initialize the list of libpng library targets. @@ -601,55 +668,60 @@ if(PNG_SHARED) add_library(png_shared SHARED ${libpng_sources}) add_dependencies(png_shared png_genfiles) list(APPEND PNG_LIBRARY_TARGETS png_shared) - set_target_properties(png_shared PROPERTIES - OUTPUT_NAME "${PNG_SHARED_OUTPUT_NAME}" - DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}" - VERSION "${PNGLIB_SHARED_VERSION}" - SOVERSION "${PNGLIB_ABI_VERSION}") + set_target_properties(png_shared + PROPERTIES OUTPUT_NAME "${PNG_SHARED_OUTPUT_NAME}" + DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}" + VERSION "${PNGLIB_SHARED_VERSION}" + SOVERSION "${PNGLIB_ABI_VERSION}") if(UNIX AND AWK) if(HAVE_LD_VERSION_SCRIPT) - set_target_properties(png_shared PROPERTIES - LINK_FLAGS "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") + set_target_properties(png_shared + PROPERTIES LINK_FLAGS "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") elseif(HAVE_SOLARIS_LD_VERSION_SCRIPT) - set_target_properties(png_shared PROPERTIES - LINK_FLAGS "-Wl,-M -Wl,'${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") + set_target_properties(png_shared + PROPERTIES LINK_FLAGS "-Wl,-M -Wl,'${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") endif() endif() if(APPLE) # Avoid CMake's implicit compile definition "png_shared_EXPORTS". - set_target_properties(png_shared PROPERTIES DEFINE_SYMBOL "") + set_target_properties(png_shared + PROPERTIES DEFINE_SYMBOL "") elseif(WIN32) # Use the explicit compile definition "PNG_BUILD_DLL" for Windows DLLs. - set_target_properties(png_shared PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL) + set_target_properties(png_shared + PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL) endif() target_include_directories(png_shared - PUBLIC $) + PUBLIC "$") target_include_directories(png_shared - PUBLIC $) - target_include_directories(png_shared SYSTEM - INTERFACE $) - target_link_libraries(png_shared PUBLIC ZLIB::ZLIB ${M_LIBRARY}) + PUBLIC "$") + target_include_directories(png_shared + SYSTEM + INTERFACE "$") + target_link_libraries(png_shared + PUBLIC ${PNG_LINK_LIBRARIES}) endif() if(PNG_STATIC) add_library(png_static STATIC ${libpng_sources}) add_dependencies(png_static png_genfiles) list(APPEND PNG_LIBRARY_TARGETS png_static) - set_target_properties(png_static PROPERTIES - OUTPUT_NAME "${PNG_STATIC_OUTPUT_NAME}" - DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}") + set_target_properties(png_static + PROPERTIES OUTPUT_NAME "${PNG_STATIC_OUTPUT_NAME}" + DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}") + target_include_directories(png_static + PUBLIC "$") target_include_directories(png_static - PUBLIC $) + PUBLIC "$") target_include_directories(png_static - PUBLIC $) - target_include_directories(png_static SYSTEM - INTERFACE $) - target_link_libraries(png_static PUBLIC ZLIB::ZLIB ${M_LIBRARY}) + SYSTEM + INTERFACE "$") + target_link_libraries(png_static + PUBLIC ${PNG_LINK_LIBRARIES}) endif() if(PNG_FRAMEWORK AND NOT APPLE) - message(AUTHOR_WARNING - "Setting PNG_FRAMEWORK to OFF, as it only applies to Apple systems") + message(AUTHOR_WARNING "Setting PNG_FRAMEWORK to OFF, as it only applies to Apple systems") set(PNG_FRAMEWORK OFF) endif() @@ -657,25 +729,28 @@ if(PNG_FRAMEWORK) add_library(png_framework SHARED ${libpng_sources}) add_dependencies(png_framework png_genfiles) list(APPEND PNG_LIBRARY_TARGETS png_framework) - set_target_properties(png_framework PROPERTIES - FRAMEWORK TRUE - FRAMEWORK_VERSION "${PNGLIB_VERSION}" - MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${PNGLIB_MAJOR}.${PNGLIB_MINOR}" - MACOSX_FRAMEWORK_BUNDLE_VERSION "${PNGLIB_VERSION}" - MACOSX_FRAMEWORK_IDENTIFIER "org.libpng.libpng" - XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" - PUBLIC_HEADER "${libpng_public_hdrs}" - OUTPUT_NAME "png" - DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}") + set_target_properties(png_framework + PROPERTIES FRAMEWORK TRUE + FRAMEWORK_VERSION "${PNGLIB_VERSION}" + MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${PNGLIB_MAJOR}.${PNGLIB_MINOR}" + MACOSX_FRAMEWORK_BUNDLE_VERSION "${PNGLIB_VERSION}" + MACOSX_FRAMEWORK_IDENTIFIER "org.libpng.libpng" + XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + PUBLIC_HEADER "${libpng_public_hdrs}" + OUTPUT_NAME "png" + DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}") # Avoid CMake's implicit compile definition "-Dpng_framework_EXPORTS". - set_target_properties(png_framework PROPERTIES DEFINE_SYMBOL "") + set_target_properties(png_framework + PROPERTIES DEFINE_SYMBOL "") + target_include_directories(png_framework + PUBLIC "$") target_include_directories(png_framework - PUBLIC $) + PUBLIC "$") target_include_directories(png_framework - PUBLIC $) - target_include_directories(png_framework SYSTEM - INTERFACE $) - target_link_libraries(png_framework PUBLIC ZLIB::ZLIB ${M_LIBRARY}) + SYSTEM + INTERFACE "$") + target_link_libraries(png_framework + PUBLIC ${PNG_LINK_LIBRARIES}) endif() if(NOT PNG_LIBRARY_TARGETS) @@ -688,7 +763,7 @@ if(PNG_TESTS AND PNG_SHARED) enable_testing() # Include the internal module PNGTest.cmake - include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGTest.cmake) + include("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGTest.cmake") # Find test PNG files by globbing, but sort lists to ensure # consistency between different filesystems. @@ -702,7 +777,8 @@ if(PNG_TESTS AND PNG_SHARED) set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png") add_executable(pngtest ${pngtest_sources}) - target_link_libraries(pngtest PRIVATE png_shared) + target_link_libraries(pngtest + PRIVATE png_shared) png_add_test(NAME pngtest COMMAND pngtest @@ -713,7 +789,8 @@ if(PNG_TESTS AND PNG_SHARED) FILES "${TEST_PNG3_PNGS}") add_executable(pngvalid ${pngvalid_sources}) - target_link_libraries(pngvalid PRIVATE png_shared) + target_link_libraries(pngvalid + PRIVATE png_shared) png_add_test(NAME pngvalid-gamma-16-to-8 COMMAND pngvalid @@ -759,7 +836,8 @@ if(PNG_TESTS AND PNG_SHARED) OPTIONS --transform) add_executable(pngstest ${pngstest_sources}) - target_link_libraries(pngstest PRIVATE png_shared) + target_link_libraries(pngstest + PRIVATE png_shared) foreach(gamma_type 1.8 linear none sRGB) foreach(alpha_type none alpha) @@ -814,7 +892,8 @@ if(PNG_TESTS AND PNG_SHARED) endforeach() add_executable(pngunknown ${pngunknown_sources}) - target_link_libraries(pngunknown PRIVATE png_shared) + target_link_libraries(pngunknown + PRIVATE png_shared) png_add_test(NAME pngunknown-discard COMMAND pngunknown @@ -830,7 +909,8 @@ if(PNG_TESTS AND PNG_SHARED) FILES "${PNGTEST_PNG}") png_add_test(NAME pngunknown-sAPI COMMAND pngunknown - OPTIONS --strict bKGD=save cHRM=save gAMA=save all=discard iCCP=save sBIT=save sRGB=save + OPTIONS --strict + bKGD=save cHRM=save gAMA=save all=discard iCCP=save sBIT=save sRGB=save FILES "${PNGTEST_PNG}") png_add_test(NAME pngunknown-save COMMAND pngunknown @@ -846,7 +926,8 @@ if(PNG_TESTS AND PNG_SHARED) FILES "${PNGTEST_PNG}") add_executable(pngimage ${pngimage_sources}) - target_link_libraries(pngimage PRIVATE png_shared) + target_link_libraries(pngimage + PRIVATE png_shared) png_add_test(NAME pngimage-quick COMMAND pngimage @@ -860,11 +941,13 @@ endif() if(PNG_SHARED AND PNG_TOOLS) add_executable(pngfix ${pngfix_sources}) - target_link_libraries(pngfix PRIVATE png_shared) + target_link_libraries(pngfix + PRIVATE png_shared) set(PNG_BIN_TARGETS pngfix) add_executable(png-fix-itxt ${png_fix_itxt_sources}) - target_link_libraries(png-fix-itxt PRIVATE ZLIB::ZLIB ${M_LIBRARY}) + target_link_libraries(png-fix-itxt + PRIVATE ${PNG_LINK_LIBRARIES}) list(APPEND PNG_BIN_TARGETS png-fix-itxt) endif() @@ -878,12 +961,11 @@ function(create_symlink DEST_FILE) # CMake version 3.13. cmake_parse_arguments(_SYM "" "FILE;TARGET" "" ${ARGN}) if(NOT _SYM_FILE AND NOT _SYM_TARGET) - message(FATAL_ERROR "create_symlink: Missing FILE or TARGET argument") + message(FATAL_ERROR "create_symlink: Missing arguments: FILE or TARGET") endif() if(_SYM_FILE AND _SYM_TARGET) - message(FATAL_ERROR "create_symlink: " - "The arguments FILE (${_SYM_FILE}) and TARGET (${_SYM_TARGET}) " - "are mutually-exclusive") + message(FATAL_ERROR "create_symlink: Mutually-exlusive arguments:" + "FILE (${_SYM_FILE}) and TARGET (${_SYM_TARGET})") endif() if(_SYM_FILE) @@ -892,12 +974,14 @@ function(create_symlink DEST_FILE) if(CMAKE_HOST_WIN32 AND NOT CYGWIN) execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different - ${_SYM_FILE} ${DEST_FILE} + "${_SYM_FILE}" + "${DEST_FILE}" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") else() execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink - ${_SYM_FILE} ${DEST_FILE} + "${_SYM_FILE}" + "${DEST_FILE}" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") endif() endif() @@ -911,28 +995,28 @@ function(create_symlink DEST_FILE) POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy_if_different - $/$ - $/${DEST_FILE}) + "$/$" + "$/${DEST_FILE}") else() add_custom_command(TARGET ${_SYM_TARGET} POST_BUILD COMMAND "${CMAKE_COMMAND}" -E create_symlink - $ - $/${DEST_FILE}) + "$" + "$/${DEST_FILE}") endif() endif() endfunction() # Create source generation scripts. -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/genchk.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genchk.cmake +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/genchk.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genchk.cmake" @ONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/genout.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genout.cmake +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/genout.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genout.cmake" @ONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/gensrc.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/gensrc.cmake +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/gensrc.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/gensrc.cmake" @ONLY) # libpng is a library so default to 'lib' @@ -945,17 +1029,17 @@ endif() # Only do this on Windows for Cygwin - the files don't make much sense # outside of a UNIX look-alike. if(NOT WIN32 OR CYGWIN OR MINGW) - set(prefix ${CMAKE_INSTALL_PREFIX}) - set(exec_prefix ${CMAKE_INSTALL_PREFIX}) - set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) - set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) - set(LIBS "-lz -lm") - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}.pc + set(prefix "${CMAKE_INSTALL_PREFIX}") + set(exec_prefix "${CMAKE_INSTALL_PREFIX}") + set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}") + set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}") + set(LIBS "-lz -lm") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in" + "${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}.pc" @ONLY) create_symlink(libpng.pc FILE libpng${PNGLIB_ABI_VERSION}.pc) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in - ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in" + "${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config" @ONLY) create_symlink(libpng-config FILE libpng${PNGLIB_ABI_VERSION}-config) endif() @@ -964,72 +1048,72 @@ endif() if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) install(TARGETS ${PNG_LIBRARY_TARGETS} EXPORT libpng - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}) + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}") if(PNG_SHARED) # Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin if(NOT WIN32 OR CYGWIN OR MINGW) create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png_shared) - install(FILES $/libpng${CMAKE_SHARED_LIBRARY_SUFFIX} - DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(FILES "$/libpng${CMAKE_SHARED_LIBRARY_SUFFIX}" + DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() endif() if(PNG_STATIC) if(NOT WIN32 OR CYGWIN OR MINGW) create_symlink(libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static) - install(FILES $/libpng${CMAKE_STATIC_LIBRARY_SUFFIX} - DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(FILES "$/libpng${CMAKE_STATIC_LIBRARY_SUFFIX}" + DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() endif() endif() if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) install(FILES ${libpng_public_hdrs} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") install(FILES ${libpng_public_hdrs} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}) + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}") endif() if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL) if(NOT WIN32 OR CYGWIN OR MINGW) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config - DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config - DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/libpng-config" + DESTINATION "${CMAKE_INSTALL_BINDIR}") + install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config" + DESTINATION "${CMAKE_INSTALL_BINDIR}") endif() endif() if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL) install(TARGETS ${PNG_BIN_TARGETS} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") endif() if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL) # Install the man pages. install(FILES libpng.3 libpngpf.3 - DESTINATION ${CMAKE_INSTALL_MANDIR}/man3) + DESTINATION "${CMAKE_INSTALL_MANDIR}/man3") install(FILES png.5 - DESTINATION ${CMAKE_INSTALL_MANDIR}/man5) + DESTINATION "${CMAKE_INSTALL_MANDIR}/man5") # Install the pkg-config files. if(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config - DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config - DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libpng.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/libpng-config" + DESTINATION "${CMAKE_INSTALL_BINDIR}") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config" + DESTINATION "${CMAKE_INSTALL_BINDIR}") endif() endif() # Create an export file that CMake users can include() to import our targets. if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL) install(EXPORT libpng - DESTINATION ${CMAKE_INSTALL_LIBDIR}/libpng + DESTINATION "${CMAKE_INSTALL_LIBDIR}/libpng" FILE libpng${PNGLIB_ABI_VERSION}.cmake) endif() @@ -1037,10 +1121,10 @@ endif() if(NOT SKIP_INSTALL_CONFIG_FILE AND NOT SKIP_INSTALL_ALL) install(TARGETS ${PNG_LIBRARY_TARGETS} EXPORT PNGTargets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}) + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}") include(CMakePackageConfigHelpers) write_basic_package_version_file(PNGConfigVersion.cmake @@ -1050,11 +1134,11 @@ if(NOT SKIP_INSTALL_CONFIG_FILE AND NOT SKIP_INSTALL_ALL) install(EXPORT PNGTargets FILE PNGTargets.cmake NAMESPACE PNG:: - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG) + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/PNG") - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/PNGConfigVersion.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/PNGConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/PNG") endif() # TODO: Create MSVC import lib for MinGW-compiled shared lib. diff --git a/vendor/libpng/INSTALL b/vendor/libpng/INSTALL index df1a494468..1557fbded4 100644 --- a/vendor/libpng/INSTALL +++ b/vendor/libpng/INSTALL @@ -136,7 +136,7 @@ Your directory structure should look like this: depcomp, install-sh, mkinstalldirs, test-pngtest.sh, etc. contrib arm-neon, conftest, examples, gregbook, libtests, pngminim, - pngminus, pngsuite, tools, visupng + pngminus, pngsuite, tools, visupng, riscv-rvv projects owatcom, visualc71, vstudio scripts @@ -289,6 +289,7 @@ such as one of --enable-mips-msa=yes --enable-intel-sse=yes --enable-powerpc-vsx=yes + --enable-riscv-rvv=yes or enable them all at once with @@ -301,6 +302,7 @@ or more of CPPFLAGS += "-DPNG_MIPS_MSA" CPPFLAGS += "-DPNG_INTEL_SSE" CPPFLAGS += "-DPNG_POWERPC_VSX" + CPPFLAGS += "-DPNG_RISCV_RVV" See for example scripts/makefile.linux-opt @@ -317,13 +319,15 @@ to disable a particular one, or via compiler-command options such as CPPFLAGS += "-DPNG_ARM_NEON_OPT=0, -DPNG_MIPS_MSA_OPT=0, - -DPNG_INTEL_SSE_OPT=0, -DPNG_POWERPC_VSX_OPT=0" + -DPNG_INTEL_SSE_OPT=0, -DPNG_POWERPC_VSX_OPT=0, + -DPNG_RISCV_RVV_OPT=0" If you are using cmake, hardware optimizations are "on" by default. To disable them, use cmake . -DPNG_ARM_NEON=no -DPNG_INTEL_SSE=no \ - -DPNG_MIPS_MSA=no -DPNG_POWERPC_VSX=no + -DPNG_MIPS_MSA=no -DPNG_POWERPC_VSX=no \ + -DPNG_RISCV_RVV=no or disable them all at once with diff --git a/vendor/libpng/Makefile.am b/vendor/libpng/Makefile.am index 217f1af848..455b6cfc41 100644 --- a/vendor/libpng/Makefile.am +++ b/vendor/libpng/Makefile.am @@ -134,13 +134,20 @@ libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES += powerpc/powerpc_init.c\ powerpc/filter_vsx_intrinsics.c endif +if PNG_RISCV_RVV +noinst_LTLIBRARIES= libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv.la +libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_SOURCES = riscv/riscv_init.c\ + riscv/filter_rvv_intrinsics.c +libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_CFLAGS = -march=rv64gv +libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LIBADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv.la +endif + if PNG_LOONGARCH_LSX noinst_LTLIBRARIES= libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_SOURCES = loongarch/loongarch_lsx_init.c\ loongarch/filter_lsx_intrinsics.c libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_CFLAGS = -mlsx libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LIBADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la -# libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la endif nodist_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = pnglibconf.h @@ -163,6 +170,10 @@ else libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng.sym endif +if PNG_RISCV_RVV + libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES += libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv.la +endif + if PNG_LOONGARCH_LSX libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES += libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la endif diff --git a/vendor/libpng/Makefile.in b/vendor/libpng/Makefile.in index a8dc362bd8..569df36e61 100644 --- a/vendor/libpng/Makefile.in +++ b/vendor/libpng/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.17 from Makefile.am. +# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2024 Free Software Foundation, Inc. +# Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -130,8 +130,9 @@ host_triplet = @host@ @HAVE_LD_VERSION_SCRIPT_TRUE@@HAVE_SOLARIS_LD_FALSE@am__append_9 = -Wl,--version-script=libpng.vers # Only restricted exports when possible @HAVE_LD_VERSION_SCRIPT_FALSE@am__append_10 = -export-symbols libpng.sym -@PNG_LOONGARCH_LSX_TRUE@am__append_11 = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la -@DO_PNG_PREFIX_TRUE@am__append_12 = -DPNG_PREFIX='@PNG_PREFIX@' +@PNG_RISCV_RVV_TRUE@am__append_11 = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv.la +@PNG_LOONGARCH_LSX_TRUE@am__append_12 = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la +@DO_PNG_PREFIX_TRUE@am__append_13 = -DPNG_PREFIX='@PNG_PREFIX@' subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/autoconf/libtool.m4 \ @@ -239,6 +240,18 @@ libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_LINK = $(LIBTOOL) $(AM_V_lt) \ $(CCLD) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ @PNG_LOONGARCH_LSX_TRUE@am_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_rpath = +libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_LIBADD = +am__libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_SOURCES_DIST = \ + riscv/riscv_init.c riscv/filter_rvv_intrinsics.c +@PNG_RISCV_RVV_TRUE@am_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_OBJECTS = riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.lo \ +@PNG_RISCV_RVV_TRUE@ riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.lo +libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_OBJECTS = \ + $(am_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_OBJECTS) +libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_LINK = $(LIBTOOL) $(AM_V_lt) \ + --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +@PNG_RISCV_RVV_TRUE@am_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_rpath = am__png_fix_itxt_SOURCES_DIST = contrib/tools/png-fix-itxt.c @ENABLE_TOOLS_TRUE@am_png_fix_itxt_OBJECTS = \ @ENABLE_TOOLS_TRUE@ contrib/tools/png-fix-itxt.$(OBJEXT) @@ -332,7 +345,9 @@ am__depfiles_remade = ./$(DEPDIR)/png.Plo ./$(DEPDIR)/pngerror.Plo \ mips/$(DEPDIR)/filter_msa_intrinsics.Plo \ mips/$(DEPDIR)/mips_init.Plo \ powerpc/$(DEPDIR)/filter_vsx_intrinsics.Plo \ - powerpc/$(DEPDIR)/powerpc_init.Plo + powerpc/$(DEPDIR)/powerpc_init.Plo \ + riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.Plo \ + riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -355,12 +370,14 @@ am__v_CCLD_1 = SOURCES = $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES) \ $(nodist_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES) \ $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_SOURCES) \ + $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_SOURCES) \ $(png_fix_itxt_SOURCES) $(pngcp_SOURCES) $(pngfix_SOURCES) \ $(pngimage_SOURCES) $(pngstest_SOURCES) $(pngtest_SOURCES) \ $(pngunknown_SOURCES) $(pngvalid_SOURCES) $(timepng_SOURCES) DIST_SOURCES = \ $(am__libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES_DIST) \ $(am__libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_SOURCES_DIST) \ + $(am__libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_SOURCES_DIST) \ $(am__png_fix_itxt_SOURCES_DIST) $(am__pngcp_SOURCES_DIST) \ $(am__pngfix_SOURCES_DIST) $(am__pngimage_SOURCES_DIST) \ $(am__pngstest_SOURCES_DIST) $(am__pngtest_SOURCES_DIST) \ @@ -510,7 +527,7 @@ am__common_driver_flags = \ # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the -# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# developer-defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). @@ -827,21 +844,28 @@ libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = png.c pngerror.c \ $(am__append_4) $(am__append_5) $(am__append_6) \ $(am__append_7) @PNG_LOONGARCH_LSX_TRUE@noinst_LTLIBRARIES = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la +@PNG_RISCV_RVV_TRUE@noinst_LTLIBRARIES = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv.la +@PNG_RISCV_RVV_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_SOURCES = riscv/riscv_init.c\ +@PNG_RISCV_RVV_TRUE@ riscv/filter_rvv_intrinsics.c + +@PNG_RISCV_RVV_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_CFLAGS = -march=rv64gv +@PNG_LOONGARCH_LSX_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LIBADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la +@PNG_RISCV_RVV_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LIBADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv.la @PNG_LOONGARCH_LSX_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_SOURCES = loongarch/loongarch_lsx_init.c\ @PNG_LOONGARCH_LSX_TRUE@ loongarch/filter_lsx_intrinsics.c @PNG_LOONGARCH_LSX_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_CFLAGS = -mlsx -@PNG_LOONGARCH_LSX_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LIBADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la -# libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la nodist_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = pnglibconf.h libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS = -no-undefined \ -export-dynamic -version-number \ @PNGLIB_MAJOR@@PNGLIB_MINOR@:@PNGLIB_RELEASE@:0 \ $(am__append_8) $(am__append_9) $(am__append_10) @HAVE_LD_VERSION_SCRIPT_FALSE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = \ -@HAVE_LD_VERSION_SCRIPT_FALSE@ libpng.sym $(am__append_11) +@HAVE_LD_VERSION_SCRIPT_FALSE@ libpng.sym $(am__append_11) \ +@HAVE_LD_VERSION_SCRIPT_FALSE@ $(am__append_12) @HAVE_LD_VERSION_SCRIPT_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = \ -@HAVE_LD_VERSION_SCRIPT_TRUE@ libpng.vers $(am__append_11) +@HAVE_LD_VERSION_SCRIPT_TRUE@ libpng.vers $(am__append_11) \ +@HAVE_LD_VERSION_SCRIPT_TRUE@ $(am__append_12) pkginclude_HEADERS = png.h pngconf.h nodist_pkginclude_HEADERS = pnglibconf.h pkgconfig_DATA = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc @@ -875,7 +899,7 @@ SUFFIXES = .chk .out SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0' \ -DPNGLIB_VERSION='@PNGLIB_VERSION@' \ -DSYMBOL_PREFIX='$(SYMBOL_PREFIX)' -DPNG_NO_USE_READ_MACROS \ - -DPNG_BUILDING_SYMBOL_TABLE $(am__append_12) + -DPNG_BUILDING_SYMBOL_TABLE $(am__append_13) # EXT_LIST is a list of the possibly library directory extensions, this exists # because we can't find a good way of discovering the file extensions that are @@ -1087,6 +1111,19 @@ loongarch/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la-filter_lsx_intrinsics.lo: \ libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la: $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_OBJECTS) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_DEPENDENCIES) $(EXTRA_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_DEPENDENCIES) $(AM_V_CCLD)$(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_LINK) $(am_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_rpath) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_OBJECTS) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_LIBADD) $(LIBS) +riscv/$(am__dirstamp): + @$(MKDIR_P) riscv + @: >>riscv/$(am__dirstamp) +riscv/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) riscv/$(DEPDIR) + @: >>riscv/$(DEPDIR)/$(am__dirstamp) +riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.lo: \ + riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) +riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.lo: \ + riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) + +libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv.la: $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_OBJECTS) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_DEPENDENCIES) $(EXTRA_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_DEPENDENCIES) + $(AM_V_CCLD)$(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_LINK) $(am_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_rpath) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_OBJECTS) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_LIBADD) $(LIBS) contrib/tools/$(am__dirstamp): @$(MKDIR_P) contrib/tools @: >>contrib/tools/$(am__dirstamp) @@ -1202,6 +1239,8 @@ mostlyclean-compile: -rm -f mips/*.lo -rm -f powerpc/*.$(OBJEXT) -rm -f powerpc/*.lo + -rm -f riscv/*.$(OBJEXT) + -rm -f riscv/*.lo distclean-compile: -rm -f *.tab.c @@ -1242,6 +1281,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/mips_init.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@powerpc/$(DEPDIR)/filter_vsx_intrinsics.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@powerpc/$(DEPDIR)/powerpc_init.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @@ -1287,6 +1328,20 @@ loongarch/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la-filter_lsx_intrinsics.lo: loo @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_CFLAGS) $(CFLAGS) -c -o loongarch/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la-filter_lsx_intrinsics.lo `test -f 'loongarch/filter_lsx_intrinsics.c' || echo '$(srcdir)/'`loongarch/filter_lsx_intrinsics.c +riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.lo: riscv/riscv_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_CFLAGS) $(CFLAGS) -MT riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.lo -MD -MP -MF riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.Tpo -c -o riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.lo `test -f 'riscv/riscv_init.c' || echo '$(srcdir)/'`riscv/riscv_init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.Tpo riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/riscv_init.c' object='riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_CFLAGS) $(CFLAGS) -c -o riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.lo `test -f 'riscv/riscv_init.c' || echo '$(srcdir)/'`riscv/riscv_init.c + +riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.lo: riscv/filter_rvv_intrinsics.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_CFLAGS) $(CFLAGS) -MT riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.lo -MD -MP -MF riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.Tpo -c -o riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.lo `test -f 'riscv/filter_rvv_intrinsics.c' || echo '$(srcdir)/'`riscv/filter_rvv_intrinsics.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.Tpo riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/filter_rvv_intrinsics.c' object='riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_CFLAGS) $(CFLAGS) -c -o riscv/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.lo `test -f 'riscv/filter_rvv_intrinsics.c' || echo '$(srcdir)/'`riscv/filter_rvv_intrinsics.c + mostlyclean-libtool: -rm -f *.lo @@ -1297,6 +1352,7 @@ clean-libtool: -rm -rf loongarch/.libs loongarch/_libs -rm -rf mips/.libs mips/_libs -rm -rf powerpc/.libs powerpc/_libs + -rm -rf riscv/.libs riscv/_libs distclean-libtool: -rm -f libtool config.lt @@ -1913,6 +1969,7 @@ tests/pngimage-full.log: tests/pngimage-full @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -1966,6 +2023,10 @@ dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) +dist-bzip3: distdir + tardir=$(distdir) && $(am__tar) | bzip3 -c >$(distdir).tar.bz3 + $(am__post_remove_distdir) + dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) @@ -2009,6 +2070,8 @@ distcheck: dist eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.bz3*) \ + bzip3 -dc $(distdir).tar.bz3 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ @@ -2148,6 +2211,8 @@ distclean-generic: -$(am__rm_f) mips/$(am__dirstamp) -$(am__rm_f) powerpc/$(DEPDIR)/$(am__dirstamp) -$(am__rm_f) powerpc/$(am__dirstamp) + -$(am__rm_f) riscv/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) riscv/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -2201,6 +2266,8 @@ distclean: distclean-am -rm -f mips/$(DEPDIR)/mips_init.Plo -rm -f powerpc/$(DEPDIR)/filter_vsx_intrinsics.Plo -rm -f powerpc/$(DEPDIR)/powerpc_init.Plo + -rm -f riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.Plo + -rm -f riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags @@ -2288,6 +2355,8 @@ maintainer-clean: maintainer-clean-am -rm -f mips/$(DEPDIR)/mips_init.Plo -rm -f powerpc/$(DEPDIR)/filter_vsx_intrinsics.Plo -rm -f powerpc/$(DEPDIR)/powerpc_init.Plo + -rm -f riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-filter_rvv_intrinsics.Plo + -rm -f riscv/$(DEPDIR)/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la-riscv_init.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -2320,15 +2389,15 @@ uninstall-man: uninstall-man3 uninstall-man5 clean-checkPROGRAMS clean-cscope clean-generic \ clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ - dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ - dist-zip dist-zstd distcheck distclean distclean-compile \ - distclean-generic distclean-hdr distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-binSCRIPTS install-data \ - install-data-am install-data-hook install-dvi install-dvi-am \ - install-exec install-exec-am install-exec-hook install-html \ - install-html-am install-info install-info-am \ + dist-bzip3 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip dist-zstd distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-binSCRIPTS \ + install-data install-data-am install-data-hook install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-man3 install-man5 \ install-nodist_pkgincludeHEADERS install-pdf install-pdf-am \ install-pkgconfigDATA install-pkgincludeHEADERS install-ps \ diff --git a/vendor/libpng/README b/vendor/libpng/README index 57952fb215..25f0f54fda 100644 --- a/vendor/libpng/README +++ b/vendor/libpng/README @@ -1,182 +1,106 @@ -README for libpng version 1.6.47 -================================ - -See the note about version numbers near the top of `png.h`. -See `INSTALL` for instructions on how to install libpng. - -Libpng comes in several distribution formats. Get `libpng-*.tar.gz` -or `libpng-*.tar.xz` if you want UNIX-style line endings in the text -files, or `lpng*.7z` or `lpng*.zip` if you want DOS-style line endings. - -For a detailed description on using libpng, read `libpng-manual.txt`. -For examples of libpng in a program, see `example.c` and `pngtest.c`. -For usage information and restrictions (what little they are) on libpng, -see `png.h`. For a description on using zlib (the compression library -used by libpng) and zlib's restrictions, see `zlib.h`. - -You should use zlib 1.0.4 or later to run this, but it _may_ work with -versions as old as zlib 0.95. Even so, there are bugs in older zlib -versions which can cause the output of invalid compression streams for -some images. - -You should also note that zlib is a compression library that is useful -for more things than just PNG files. You can use zlib as a drop-in -replacement for `fread()` and `fwrite()`, if you are so inclined. - -zlib should be available at the same place that libpng is, or at -https://zlib.net . - -You may also want a copy of the PNG specification. It is available -as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find -these at http://www.libpng.org/pub/png/pngdocs.html . - -This code is currently being archived at https://libpng.sourceforge.io -in the download area, and at http://libpng.download/src . - -This release, based in a large way on Glenn's, Guy's and Andreas' -earlier work, was created and will be supported by myself and the PNG -development group. - -Send comments, corrections and commendations to `png-mng-implement` -at `lists.sourceforge.net`. (Subscription is required; visit -https://lists.sourceforge.net/lists/listinfo/png-mng-implement -to subscribe.) - -Send general questions about the PNG specification to `png-mng-misc` -at `lists.sourceforge.net`. (Subscription is required; visit -https://lists.sourceforge.net/lists/listinfo/png-mng-misc -to subscribe.) - -Historical notes ----------------- - -The libpng library has been in extensive use and testing since mid-1995. -Version 0.89, published a year later, was the first official release. -By late 1997, it had finally gotten to the stage where there hadn't -been significant changes to the API in some time, and people have a bad -feeling about libraries with versions below 1.0. Version 1.0.0 was -released in March 1998. - -Note that some of the changes to the `png_info` structure render this -version of the library binary incompatible with libpng-0.89 or -earlier versions if you are using a shared library. The type of the -`filler` parameter for `png_set_filler()` has changed from `png_byte` -to `png_uint_32`, which will affect shared-library applications that -use this function. - -To avoid problems with changes to the internals of the `info_struct`, -new APIs have been made available in 0.95 to avoid direct application -access to `info_ptr`. These functions are the `png_set_` and -`png_get_` functions. These functions should be used when -accessing/storing the `info_struct` data, rather than manipulating it -directly, to avoid such problems in the future. - -It is important to note that the APIs did not make current programs -that access the info struct directly incompatible with the new -library, through libpng-1.2.x. In libpng-1.4.x, which was meant to -be a transitional release, members of the `png_struct` and the -`info_struct` can still be accessed, but the compiler will issue a -warning about deprecated usage. Since libpng-1.5.0, direct access -to these structs is not allowed, and the definitions of the structs -reside in private `pngstruct.h` and `pnginfo.h` header files that are -not accessible to applications. It is strongly suggested that new -programs use the new APIs (as shown in `example.c` and `pngtest.c`), -and older programs be converted to the new format, to facilitate -upgrades in the future. - -The additions since 0.89 include the ability to read from a PNG stream -which has had some (or all) of the signature bytes read by the calling -application. This also allows the reading of embedded PNG streams that -do not have the PNG file signature. As well, it is now possible to set -the library action on the detection of chunk CRC errors. It is possible -to set different actions based on whether the CRC error occurred in a -critical or an ancillary chunk. - -The additions since 0.90 include the ability to compile libpng as a -Windows DLL, and new APIs for accessing data in the `info_struct`. -Experimental functions included the ability to set weighting and cost -factors for row filter selection, direct reads of integers from buffers -on big-endian processors that support misaligned data access, faster -methods of doing alpha composition, and more accurate 16-to-8 bit color -conversion. Some of these experimental functions, such as the weighted -filter heuristics, have since been removed. - -Files included in this distribution ------------------------------------ - - ANNOUNCE => Announcement of this version, with recent changes - AUTHORS => List of contributing authors - CHANGES => Description of changes between libpng versions - INSTALL => Instructions to install libpng - LICENSE => License to use and redistribute libpng - README => This file - TODO => Things not implemented in the current library - TRADEMARK => Trademark information - example.c => Example code for using libpng functions - libpng.3 => Manual page for libpng (includes libpng-manual.txt) - libpng-manual.txt => Description of libpng and its functions - libpngpf.3 => Manual page for libpng's private functions (deprecated) - png.5 => Manual page for the PNG format - png.c => Basic interface functions common to library - png.h => Library function and interface declarations (public) - pngpriv.h => Library function and interface declarations (private) - pngconf.h => System specific library configuration (public) - pngstruct.h => png_struct declaration (private) - pnginfo.h => png_info struct declaration (private) - pngdebug.h => debugging macros (private) - pngerror.c => Error/warning message I/O functions - pngget.c => Functions for retrieving info from struct - pngmem.c => Memory handling functions - pngbar.png => PNG logo, 88x31 - pngnow.png => PNG logo, 98x31 - pngpread.c => Progressive reading functions - pngread.c => Read data/helper high-level functions - pngrio.c => Lowest-level data read I/O functions - pngrtran.c => Read data transformation functions - pngrutil.c => Read data utility functions - pngset.c => Functions for storing data into the info_struct - pngtest.c => Library test program - pngtest.png => Library test sample image - pngtrans.c => Common data transformation functions - pngwio.c => Lowest-level write I/O functions - pngwrite.c => High-level write functions - pngwtran.c => Write data transformations - pngwutil.c => Write utility functions - arm/ => Optimized code for ARM Neon - intel/ => Optimized code for INTEL SSE2 - loongarch/ => Optimized code for LoongArch LSX - mips/ => Optimized code for MIPS MSA and MIPS MMI - powerpc/ => Optimized code for PowerPC VSX - ci/ => Scripts for continuous integration - contrib/ => External contributions - arm-neon/ => Optimized code for the ARM-NEON platform - mips-msa/ => Optimized code for the MIPS-MSA platform - powerpc-vsx/ => Optimized code for the POWERPC-VSX platform - examples/ => Examples of libpng usage - gregbook/ => Source code for PNG reading and writing, from - "PNG: The Definitive Guide" by Greg Roelofs, - O'Reilly, 1999 - libtests/ => Test programs - pngexif/ => Program to inspect the EXIF information in PNG files - pngminim/ => Minimal decoder, encoder, and progressive decoder - programs demonstrating the use of pngusr.dfa - pngminus/ => Simple pnm2png and png2pnm programs - pngsuite/ => Test images - testpngs/ => Test images - tools/ => Various tools - visupng/ => VisualPng, a Windows viewer for PNG images - projects/ => Project files and workspaces for various IDEs - owatcom/ => OpenWatcom project - visualc71/ => Microsoft Visual C++ 7.1 workspace - vstudio/ => Microsoft Visual Studio workspace - scripts/ => Scripts and makefiles for building libpng - (see scripts/README.txt for the complete list) - tests/ => Test scripts - -Good luck, and happy coding! - - * Cosmin Truta (current maintainer, since 2018) - * Glenn Randers-Pehrson (former maintainer, 1998-2018) - * Andreas Eric Dilger (former maintainer, 1996-1997) - * Guy Eric Schalnat (original author and former maintainer, 1995-1996) - (formerly of Group 42, Inc.) +pngsuite +-------- +Copyright (c) Willem van Schaik, 1999, 2011, 2012 +Two images (ftbbn0g01.png and ftbbn0g02.png) are by Glenn Randers-Pehrson, 2012 + +Permission to use, copy, modify, and distribute these images for any +purpose and without fee is hereby granted. + +The 15 "bas*.png" images are part of the much larger PngSuite test-set of +images, available for developers of PNG supporting software. The +complete set, available at http:/www.schaik.com/pngsuite/, contains +a variety of images to test interlacing, gamma settings, ancillary +chunks, etc. + +The "ft*.png" images are "free/libre" replacements for the transparent +corresponding t*.png images in the PngSuite. + +The "i*.png" images are the same images, but interlaced. + +The images in this directory represent the basic PNG color-types: +grayscale (1-16 bit deep), full color (8 or 16 bit), paletted +(1-8 bit) and grayscale or color images with alpha channel. You +can use them to test the proper functioning of PNG software. + + filename depth type + ------------ ------ -------------- + basn0g01.png 1-bit grayscale + basn0g02.png 2-bit grayscale + basn0g04.png 4-bit grayscale + basn0g08.png 8-bit grayscale + basn0g16.png 16-bit grayscale + basn2c08.png 8-bit truecolor + basn2c16.png 16-bit truecolor + basn3p01.png 1-bit paletted + basn3p02.png 2-bit paletted + basn3p04.png 4-bit paletted + basn3p08.png 8-bit paletted + basn4a08.png 8-bit gray with alpha + basn4a16.png 16-bit gray with alpha + basn6a08.png 8-bit RGBA + basn6a16.png 16-bit RGBA + + ftbbn0g01.png 1-bit grayscale, black bKGD + ftbbn0g02.png 2-bit grayscale, black bKGD + ftbbn0g04.png 4-bit grayscale, black bKGD + ftbbn2c16.png 16-bit truecolor, black bKGD + ftbbn3p08.png 8-bit paletted, black bKGD + ftbgn2c16.png 16-bit truecolor, gray bKGD + ftbgn3p08.png 8-bit paletted, gray bKGD + ftbrn2c08.png 8-bit truecolor, red bKGD + ftbwn0g16.png 16-bit gray, white bKGD + ftbwn3p08.png 8-bit paletted, white bKGD + ftbyn3p08.png 8-bit paletted, yellow bKGD + ftp0n0g08.png 8-bit grayscale, opaque + ftp0n2c08.png 8-bit truecolor, opaque + ftp0n3p08.png 8-bit paletted, opaque + ftp1n3p08.png 8-bit paletted, no bKGD + +Here is the correct result of typing "pngtest -m bas*.png" in +this directory: + +Testing basn0g01.png: PASS (524 zero samples) + Filter 0 was used 32 times +Testing basn0g02.png: PASS (448 zero samples) + Filter 0 was used 32 times +Testing basn0g04.png: PASS (520 zero samples) + Filter 0 was used 32 times +Testing basn0g08.png: PASS (3 zero samples) + Filter 1 was used 9 times + Filter 4 was used 23 times +Testing basn0g16.png: PASS (1 zero samples) + Filter 1 was used 1 times + Filter 2 was used 31 times +Testing basn2c08.png: PASS (6 zero samples) + Filter 1 was used 5 times + Filter 4 was used 27 times +Testing basn2c16.png: PASS (592 zero samples) + Filter 1 was used 1 times + Filter 4 was used 31 times +Testing basn3p01.png: PASS (512 zero samples) + Filter 0 was used 32 times +Testing basn3p02.png: PASS (448 zero samples) + Filter 0 was used 32 times +Testing basn3p04.png: PASS (544 zero samples) + Filter 0 was used 32 times +Testing basn3p08.png: PASS (4 zero samples) + Filter 0 was used 32 times +Testing basn4a08.png: PASS (32 zero samples) + Filter 1 was used 1 times + Filter 4 was used 31 times +Testing basn4a16.png: PASS (64 zero samples) + Filter 0 was used 1 times + Filter 1 was used 2 times + Filter 2 was used 1 times + Filter 4 was used 28 times +Testing basn6a08.png: PASS (160 zero samples) + Filter 1 was used 1 times + Filter 4 was used 31 times +Testing basn6a16.png: PASS (1072 zero samples) + Filter 1 was used 4 times + Filter 4 was used 28 times +libpng passes test + +Willem van Schaik + +October 1999 diff --git a/vendor/libpng/aclocal.m4 b/vendor/libpng/aclocal.m4 index 0a6cb3f204..b7d8c1f8d5 100644 --- a/vendor/libpng/aclocal.m4 +++ b/vendor/libpng/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.17 -*- Autoconf -*- +# generated automatically by aclocal 1.18.1 -*- Autoconf -*- -# Copyright (C) 1996-2024 Free Software Foundation, Inc. +# Copyright (C) 1996-2025 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2024 Free Software Foundation, Inc. +# Copyright (C) 2002-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.]) # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.17' +[am__api_version='1.18' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.17], [], +m4_if([$1], [1.18.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.17])dnl +[AM_AUTOMAKE_VERSION([1.18.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Figure out how to run the assembler. -*- Autoconf -*- -# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -78,7 +78,7 @@ _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -130,7 +130,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2024 Free Software Foundation, Inc. +# Copyright (C) 1997-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -161,7 +161,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2024 Free Software Foundation, Inc. +# Copyright (C) 1999-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -352,7 +352,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2024 Free Software Foundation, Inc. +# Copyright (C) 1999-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -420,7 +420,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2024 Free Software Foundation, Inc. +# Copyright (C) 1996-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -520,8 +520,9 @@ AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], + [_AM_PROG_TAR([ustar])])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], @@ -597,7 +598,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -618,7 +619,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2024 Free Software Foundation, Inc. +# Copyright (C) 2003-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -640,7 +641,7 @@ AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2024 Free Software Foundation, Inc. +# Copyright (C) 1996-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -675,7 +676,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -718,7 +719,7 @@ AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2024 Free Software Foundation, Inc. +# Copyright (C) 1997-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -752,7 +753,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -781,7 +782,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2024 Free Software Foundation, Inc. +# Copyright (C) 1999-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -813,7 +814,10 @@ AC_CACHE_CHECK( break fi done - rm -f core conftest* + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. @@ -828,7 +832,7 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# Copyright (C) 2022-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -844,7 +848,7 @@ AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) AC_SUBST(am__rm_f_notfound) ]) -# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -863,7 +867,7 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2024 Free Software Foundation, Inc. +# Copyright (C) 1996-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1032,10 +1036,12 @@ am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_RESULT([no]) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_RESULT([no]) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac @@ -1088,7 +1094,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2024 Free Software Foundation, Inc. +# Copyright (C) 2009-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1157,9 +1163,13 @@ fi # empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_REQUIRE([_AM_SILENT_RULES]) -AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])m4_newline +dnl We intentionally force a newline after the assignment, since a) nothing +dnl good can come of more text following, and b) that was the behavior +dnl before 1.17. See https://bugs.gnu.org/72267. +]) -# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# Copyright (C) 2001-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1187,7 +1197,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2024 Free Software Foundation, Inc. +# Copyright (C) 2006-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1206,7 +1216,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2024 Free Software Foundation, Inc. +# Copyright (C) 2004-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1341,7 +1351,7 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR -# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# Copyright (C) 2022-2025 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff --git a/vendor/libpng/arm/arm_init.c b/vendor/libpng/arm/arm_init.c index 50376081a3..0ea9c836cc 100644 --- a/vendor/libpng/arm/arm_init.c +++ b/vendor/libpng/arm/arm_init.c @@ -35,14 +35,14 @@ #ifndef PNG_ARM_NEON_FILE # if defined(__aarch64__) || defined(_M_ARM64) /* ARM Neon is expected to be unconditionally available on ARM64. */ -# error "PNG_ARM_NEON_CHECK_SUPPORTED must not be defined on ARM64" +# error PNG_ARM_NEON_CHECK_SUPPORTED must not be defined on ARM64 # elif defined(__ARM_NEON__) || defined(__ARM_NEON) /* ARM Neon is expected to be available on the target CPU architecture. */ -# error "PNG_ARM_NEON_CHECK_SUPPORTED must not be defined on this CPU arch" +# error PNG_ARM_NEON_CHECK_SUPPORTED must not be defined on this CPU arch # elif defined(__linux__) # define PNG_ARM_NEON_FILE "contrib/arm-neon/linux.c" # else -# error "No support for run-time ARM Neon checking; use compile-time options" +# error No support for run-time ARM Neon checking; use compile-time options # endif #endif @@ -53,7 +53,7 @@ static int png_have_neon(png_structp png_ptr); #endif /* PNG_ARM_NEON_CHECK_SUPPORTED */ #ifndef PNG_ALIGNED_MEMORY_SUPPORTED -# error "ALIGNED_MEMORY is required; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" +# error ALIGNED_MEMORY is required; please define PNG_ALIGNED_MEMORY_SUPPORTED #endif void diff --git a/vendor/libpng/ci/README.md b/vendor/libpng/ci/README.md index f26229ce08..bb032edafc 100644 --- a/vendor/libpng/ci/README.md +++ b/vendor/libpng/ci/README.md @@ -4,7 +4,7 @@ Scripts for the Continuous Integration of the PNG Reference Library Copyright Notice ---------------- -Copyright (c) 2019-2024 Cosmin Truta. +Copyright (c) 2019-2025 Cosmin Truta. Use, modification and distribution are subject to the MIT License. Please see the accompanying file `LICENSE_MIT.txt` or visit diff --git a/vendor/libpng/ci/ci_lint.sh b/vendor/libpng/ci/ci_lint.sh index 163d955ded..674e55f5d5 100644 --- a/vendor/libpng/ci/ci_lint.sh +++ b/vendor/libpng/ci/ci_lint.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o errexit -o pipefail -o posix -# Copyright (c) 2019-2024 Cosmin Truta. +# Copyright (c) 2019-2025 Cosmin Truta. # # Use, modification and distribution are subject to the MIT License. # Please see the accompanying file LICENSE_MIT.txt @@ -61,7 +61,7 @@ function ci_lint_ci_scripts { } ci_info "## LINTING: CI scripts ##" ci_spawn "$CI_SHELLCHECK" --version - find ./ci -maxdepth 1 -name "*.sh" | { + find ./ci -name "ci_*.sh" -not -name "ci_env.*.sh" | { local my_file while IFS="" read -r my_file do diff --git a/vendor/libpng/ci/ci_shellify.sh b/vendor/libpng/ci/ci_shellify.sh deleted file mode 100644 index e6693af97a..0000000000 --- a/vendor/libpng/ci/ci_shellify.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env bash -set -o errexit -o pipefail -o posix - -# Copyright (c) 2019-2024 Cosmin Truta. -# -# Use, modification and distribution are subject to the MIT License. -# Please see the accompanying file LICENSE_MIT.txt -# -# SPDX-License-Identifier: MIT - -# shellcheck source=ci/lib/ci.lib.sh -source "$(dirname "$0")/lib/ci.lib.sh" -cd "$CI_TOPLEVEL_DIR" - -function ci_shellify_c { - # Convert C preprocessor text, specifically originating - # from png.h, to shell scripting text. - # Select only the easy-to-parse definitions of PNG_LIBPNG_*. - sed -n -e '/^\# *define * PNG_LIBPNG_[^ ]* * ["0-9A-Za-z_]/ p' | - sed -e 's/^\# *define * PNG\([^ ]*\) * \([^ ]*\)/PNG\1=\2/' \ - -e 's/=PNG\([0-9A-Za-z_]*\)/=\${PNG\1}/' \ - -e 's/^\([^ ]*=[^ ]*\).*$/export \1;/' -} - -function ci_shellify_autoconf { - # Convert autoconf (M4) text, specifically originating - # from configure.ac, to shell scripting text. - # Select only the easy-to-parse definitions of PNGLIB_*. - sed -n -e '/^ *PNGLIB_[^ ]*=[$"0-9A-Za-z_]/ p' | - sed -e 's/^ *PNG\([0-9A-Za-z_]*\)=\([^# ]*\).*$/PNG\1=\2/' \ - -e 's/^\([^ ]*=[^ ]*\).*$/export \1;/' -} - -function ci_shellify_cmake { - # Convert CMake lists text, specifically originating - # from CMakeLists.txt, to shell scripting text. - # Select only the easy-to-parse definitions of PNGLIB_*. - sed -n -e '/^ *set *(PNGLIB_[^ ]* * [$"0-9A-Za-z_].*)/ p' | - sed -e 's/^ *set *(PNG\([^ ]*\) * \([^() ]*\)).*$/PNG\1=\2/' \ - -e 's/^\([^ ]*=[^ ]*\).*$/export \1;/' -} - -function ci_shellify { - local arg filename - for arg in "$@" - do - test -f "$arg" || ci_err "no such file: '$arg'" - filename="$(basename -- "$arg")" - case "$filename" in - ( *.[ch] ) - [[ $filename == png.h ]] || { - ci_err "unable to shellify: '$filename' (expecting: 'png.h')" - } - ci_shellify_c <"$arg" ;; - ( config* | *.ac ) - [[ $filename == configure.ac ]] || { - ci_err "unable to shellify: '$filename' (expecting: 'configure.ac')" - } - ci_shellify_autoconf <"$arg" ;; - ( *CMake* | *cmake* | *.txt ) - [[ $filename == [Cc][Mm]ake[Ll]ists.txt ]] || { - ci_err "unable to shellify: '$filename' (expecting: 'CMakeLists.txt')" - } - ci_shellify_cmake <"$arg" ;; - ( * ) - ci_err "unable to shellify: '$arg'" ;; - esac - done -} - -function usage { - echo "usage: $CI_SCRIPT_NAME [] ..." - echo "options: -?|-h|--help" - echo "files: png.h|configure.ac|CMakeLists.txt" - exit "${@:-0}" -} - -function main { - local opt - while getopts ":" opt - do - # This ain't a while-loop. It only pretends to be. - [[ $1 == -[?h]* || $1 == --help || $1 == --help=* ]] && usage 0 - ci_err "unknown option: '$1'" - done - shift $((OPTIND - 1)) - [[ $# -eq 0 ]] && usage 2 - # And... go! - ci_shellify "$@" -} - -main "$@" diff --git a/vendor/libpng/ci/ci_verify_cmake.sh b/vendor/libpng/ci/ci_verify_cmake.sh index 3e05ec309b..aa0646145b 100644 --- a/vendor/libpng/ci/ci_verify_cmake.sh +++ b/vendor/libpng/ci/ci_verify_cmake.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o errexit -o pipefail -o posix -# Copyright (c) 2019-2024 Cosmin Truta. +# Copyright (c) 2019-2025 Cosmin Truta. # # Use, modification and distribution are subject to the MIT License. # Please see the accompanying file LICENSE_MIT.txt diff --git a/vendor/libpng/ci/ci_verify_configure.sh b/vendor/libpng/ci/ci_verify_configure.sh index 9c3a288091..31152148eb 100644 --- a/vendor/libpng/ci/ci_verify_configure.sh +++ b/vendor/libpng/ci/ci_verify_configure.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o errexit -o pipefail -o posix -# Copyright (c) 2019-2024 Cosmin Truta. +# Copyright (c) 2019-2025 Cosmin Truta. # # Use, modification and distribution are subject to the MIT License. # Please see the accompanying file LICENSE_MIT.txt diff --git a/vendor/libpng/ci/ci_verify_makefiles.sh b/vendor/libpng/ci/ci_verify_makefiles.sh index 2d3ec72ecb..2876a86461 100644 --- a/vendor/libpng/ci/ci_verify_makefiles.sh +++ b/vendor/libpng/ci/ci_verify_makefiles.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o errexit -o pipefail -o posix -# Copyright (c) 2019-2024 Cosmin Truta. +# Copyright (c) 2019-2025 Cosmin Truta. # # Use, modification and distribution are subject to the MIT License. # Please see the accompanying file LICENSE_MIT.txt diff --git a/vendor/libpng/ci/ci_verify_version.sh b/vendor/libpng/ci/ci_verify_version.sh index 3203b201f0..5908724cd6 100644 --- a/vendor/libpng/ci/ci_verify_version.sh +++ b/vendor/libpng/ci/ci_verify_version.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o errexit -o pipefail -o posix -# Copyright (c) 2019-2024 Cosmin Truta. +# Copyright (c) 2019-2025 Cosmin Truta. # # Use, modification and distribution are subject to the MIT License. # Please see the accompanying file LICENSE_MIT.txt @@ -12,33 +12,43 @@ set -o errexit -o pipefail -o posix source "$(dirname "$0")/lib/ci.lib.sh" cd "$CI_TOPLEVEL_DIR" -function ci_init_shellify { - [[ -f $CI_SCRIPT_DIR/ci_shellify.sh ]] || { - ci_err_internal "missing script: '$CI_SCRIPT_DIR/ci_shellify.sh'" - } -} +# Declare the global environments collected from various sources. +declare CI_ENV_LIBPNG_VER # collected from png.h +declare CI_ENV_AUTOCONF_VER # collected from configure.ac +declare CI_ENV_CMAKE_VER # collected from CMakeLists.txt +declare CI_ENV_LIBPNGCONFIG_VER # collected from scripts/libpng-config-head.in function ci_run_shellify { + local my_script my_result + my_script="$CI_SCRIPT_DIR/libexec/ci_shellify_${1#--}.sh" + shift 1 + [[ -f $my_script ]] || { + ci_err_internal "missing script: '$my_script'" + } ci_info "shellifying:" "$@" - local my_result - "$BASH" "$CI_SCRIPT_DIR/ci_shellify.sh" "$@" + "$BASH" "$my_script" "$@" echo "$my_result" | "$BASH" --posix || ci_err "bad shellify output" echo "$my_result" } -function ci_verify_version { +function ci_init_version_verification { ci_info "## START OF VERIFICATION ##" - local my_env_libpng_ver my_env_autoconf_ver my_env_cmake_ver my_expect - ci_init_shellify - my_env_libpng_ver="$(ci_run_shellify png.h)" - echo "$my_env_libpng_ver" - my_env_autoconf_ver="$(ci_run_shellify configure.ac)" - echo "$my_env_autoconf_ver" - my_env_cmake_ver="$(ci_run_shellify CMakeLists.txt)" - echo "$my_env_cmake_ver" - ci_info "## VERIFYING: png.h version definitions ##" - eval "$my_env_libpng_ver" - local my_expect="${PNG_LIBPNG_VER_MAJOR}.${PNG_LIBPNG_VER_MINOR}.${PNG_LIBPNG_VER_RELEASE}" + CI_ENV_LIBPNG_VER="$(ci_run_shellify --c png.h)" + echo "$CI_ENV_LIBPNG_VER" + CI_ENV_AUTOCONF_VER="$(ci_run_shellify --autoconf configure.ac)" + echo "$CI_ENV_AUTOCONF_VER" + CI_ENV_CMAKE_VER="$(ci_run_shellify --cmake CMakeLists.txt)" + echo "$CI_ENV_CMAKE_VER" + CI_ENV_LIBPNGCONFIG_VER="$(ci_run_shellify --shell scripts/libpng-config-head.in)" + echo "$CI_ENV_LIBPNGCONFIG_VER" +} + +# shellcheck disable=SC2154 +function ci_do_version_verification { + local my_expect + ci_info "## VERIFYING: version definitions in 'png.h' ##" + eval "$CI_ENV_LIBPNG_VER" + my_expect="${PNG_LIBPNG_VER_MAJOR}.${PNG_LIBPNG_VER_MINOR}.${PNG_LIBPNG_VER_RELEASE}" if [[ "$PNG_LIBPNG_VER_STRING" == "$my_expect"* ]] then ci_info "matched: \$PNG_LIBPNG_VER_STRING == $my_expect*" @@ -77,7 +87,7 @@ function ci_verify_version { else ci_err "mismatched: \$PNG_LIBPNG_VER_BUILD != [01]" fi - ci_info "## VERIFYING: png.h build definitions ##" + ci_info "## VERIFYING: build definitions in 'png.h' ##" my_expect="${PNG_LIBPNG_VER_MAJOR}.${PNG_LIBPNG_VER_MINOR}.${PNG_LIBPNG_VER_RELEASE}" if [[ "$PNG_LIBPNG_VER_STRING" == "$my_expect" ]] then @@ -110,19 +120,19 @@ function ci_verify_version { else ci_err "unexpected: \$PNG_LIBPNG_VER_STRING == '$PNG_LIBPNG_VER_STRING'" fi - ci_info "## VERIFYING: png.h type definitions ##" + ci_info "## VERIFYING: type definitions in 'png.h' ##" my_expect="$(echo "png_libpng_version_${PNG_LIBPNG_VER_STRING}" | tr . _)" ci_spawn grep -w -e "$my_expect" png.h - ci_info "## VERIFYING: configure.ac version definitions ##" - eval "$my_env_autoconf_ver" + ci_info "## VERIFYING: version definitions in 'configure.ac' ##" + eval "$CI_ENV_AUTOCONF_VER" if [[ "$PNGLIB_VERSION" == "$PNG_LIBPNG_VER_STRING" ]] then ci_info "matched: \$PNGLIB_VERSION == \$PNG_LIBPNG_VER_STRING" else ci_err "mismatched: \$PNGLIB_VERSION != \$PNG_LIBPNG_VER_STRING" fi - ci_info "## VERIFYING: CMakeLists.txt version definitions ##" - eval "$my_env_cmake_ver" + ci_info "## VERIFYING: version definitions in 'CMakeLists.txt' ##" + eval "$CI_ENV_CMAKE_VER" if [[ "$PNGLIB_VERSION" == "$PNG_LIBPNG_VER_STRING" && "$PNGLIB_SUBREVISION" == 0 ]] then ci_info "matched: \$PNGLIB_VERSION == \$PNG_LIBPNG_VER_STRING" @@ -133,8 +143,26 @@ function ci_verify_version { else ci_err "mismatched: \$PNGLIB_VERSION != \$PNG_LIBPNG_VER_STRING" fi + ci_info "## VERIFYING: version definitions in 'scripts/libpng-config-head.in' ##" + eval "$CI_ENV_LIBPNGCONFIG_VER" + if [[ "$version" == "$PNG_LIBPNG_VER_STRING" ]] + then + ci_info "matched: \$version == \$PNG_LIBPNG_VER_STRING" + else + ci_err "mismatched: \$version != \$PNG_LIBPNG_VER_STRING" + fi +} + +function ci_finish_version_verification { ci_info "## END OF VERIFICATION ##" - ci_info "success!" + # Relying on "set -o errexit" to not reach here in case of error. + ci_info "## SUCCESS ##" +} + +function ci_verify_version { + ci_init_version_verification + ci_do_version_verification + ci_finish_version_verification } function usage { diff --git a/vendor/libpng/ci/lib/ci.lib.sh b/vendor/libpng/ci/lib/ci.lib.sh index 692851fc0e..7a7474a9a5 100644 --- a/vendor/libpng/ci/lib/ci.lib.sh +++ b/vendor/libpng/ci/lib/ci.lib.sh @@ -1,4 +1,4 @@ -# Copyright (c) 2019-2024 Cosmin Truta. +# Copyright (c) 2019-2025 Cosmin Truta. # # Use, modification and distribution are subject to the MIT License. # Please see the accompanying file LICENSE_MIT.txt diff --git a/vendor/libpng/ci/libexec/ci_shellify_autoconf.sh b/vendor/libpng/ci/libexec/ci_shellify_autoconf.sh new file mode 100644 index 0000000000..bf37f0d26b --- /dev/null +++ b/vendor/libpng/ci/libexec/ci_shellify_autoconf.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +set -o errexit -o pipefail -o posix + +# Copyright (c) 2019-2025 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +# shellcheck source=ci/lib/ci.lib.sh +source "$(dirname "$0")/../lib/ci.lib.sh" + +function ci_shellify_autoconf { + # Convert autoconf (M4) text, specifically originating + # from configure.ac, to shell scripting text. + # Select only the easy-to-parse definitions of PNGLIB_*. + sed -n -e '/^ *PNGLIB_[^ ]*=[$"0-9A-Za-z_]/ p' | + sed -e 's/^ *PNG\([0-9A-Za-z_]*\)=\([^# ]*\).*$/PNG\1=\2/' \ + -e 's/^\([^ ]*=[^ ]*\).*$/export \1;/' +} + +function usage { + echo "usage: $CI_SCRIPT_NAME [] configure.ac" + echo "options: -?|-h|--help" + exit "${@:-0}" +} + +function main { + local opt + while getopts ":" opt + do + # This ain't a while-loop. It only pretends to be. + [[ $1 == -[?h]* || $1 == --help || $1 == --help=* ]] && usage 0 + ci_err "unknown option: '$1'" + done + shift $((OPTIND - 1)) + [[ $# -eq 0 ]] && usage 2 + [[ $# -eq 1 ]] || ci_err "too many operands" + # And... go! + test -e "$1" || ci_err "no such file: '$1'" + [[ $(basename -- "$1") == configure.ac ]] || { + ci_err "incorrect operand: '$1' (expecting: 'configure.ac')" + } + ci_shellify_autoconf <"$1" +} + +main "$@" diff --git a/vendor/libpng/ci/libexec/ci_shellify_c.sh b/vendor/libpng/ci/libexec/ci_shellify_c.sh new file mode 100644 index 0000000000..244fc2275e --- /dev/null +++ b/vendor/libpng/ci/libexec/ci_shellify_c.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +set -o errexit -o pipefail -o posix + +# Copyright (c) 2019-2025 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +# shellcheck source=ci/lib/ci.lib.sh +source "$(dirname "$0")/../lib/ci.lib.sh" + +function ci_shellify_c { + # Convert C preprocessor text, specifically originating + # from png.h, to shell scripting text. + # Select only the easy-to-parse definitions of PNG_LIBPNG_*. + sed -n -e '/^\# *define * PNG_LIBPNG_[^ ]* * ["0-9A-Za-z_]/ p' | + sed -e 's/^\# *define * PNG\([^ ]*\) * \([^ ]*\)/PNG\1=\2/' \ + -e 's/=PNG\([0-9A-Za-z_]*\)/=\${PNG\1}/' \ + -e 's/^\([^ ]*=[^ ]*\).*$/export \1;/' +} + +function usage { + echo "usage: $CI_SCRIPT_NAME [] png.h" + echo "options: -?|-h|--help" + exit "${@:-0}" +} + +function main { + local opt + while getopts ":" opt + do + # This ain't a while-loop. It only pretends to be. + [[ $1 == -[?h]* || $1 == --help || $1 == --help=* ]] && usage 0 + ci_err "unknown option: '$1'" + done + shift $((OPTIND - 1)) + [[ $# -eq 0 ]] && usage 2 + [[ $# -eq 1 ]] || ci_err "too many operands" + # And... go! + test -e "$1" || ci_err "no such file: '$1'" + [[ $(basename -- "$1") == png.h ]] || { + ci_err "incorrect operand: '$1' (expecting: 'png.h')" + } + ci_shellify_c <"$1" +} + +main "$@" diff --git a/vendor/libpng/ci/libexec/ci_shellify_cmake.sh b/vendor/libpng/ci/libexec/ci_shellify_cmake.sh new file mode 100644 index 0000000000..5596241ae8 --- /dev/null +++ b/vendor/libpng/ci/libexec/ci_shellify_cmake.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +set -o errexit -o pipefail -o posix + +# Copyright (c) 2019-2025 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +# shellcheck source=ci/lib/ci.lib.sh +source "$(dirname "$0")/../lib/ci.lib.sh" + +function ci_shellify_cmake { + # Convert CMake lists text, specifically originating + # from CMakeLists.txt, to shell scripting text. + # Select only the easy-to-parse definitions of PNGLIB_*. + sed -n -e '/^ *set *(PNGLIB_[^ ]* * [$"0-9A-Za-z_].*)/ p' | + sed -e 's/^ *set *(PNG\([^ ]*\) * \([^() ]*\)).*$/PNG\1=\2/' \ + -e 's/^\([^ ]*=[^ ]*\).*$/export \1;/' +} + +function usage { + echo "usage: $CI_SCRIPT_NAME [] CMakeLists.txt" + echo "options: -?|-h|--help" + exit "${@:-0}" +} + +function main { + local opt + while getopts ":" opt + do + # This ain't a while-loop. It only pretends to be. + [[ $1 == -[?h]* || $1 == --help || $1 == --help=* ]] && usage 0 + ci_err "unknown option: '$1'" + done + shift $((OPTIND - 1)) + [[ $# -eq 0 ]] && usage 2 + [[ $# -eq 1 ]] || ci_err "too many operands" + # And... go! + test -e "$1" || ci_err "no such file: '$1'" + filename="$(basename -- "$1")" + [[ $filename == [Cc][Mm]ake[Ll]ists.txt ]] || { + ci_err "incorrect operand: '$1' (expecting: 'CMakeLists.txt')" + } + ci_shellify_cmake <"$1" +} + +main "$@" diff --git a/vendor/libpng/ci/libexec/ci_shellify_shell.sh b/vendor/libpng/ci/libexec/ci_shellify_shell.sh new file mode 100644 index 0000000000..4170063164 --- /dev/null +++ b/vendor/libpng/ci/libexec/ci_shellify_shell.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +set -o errexit -o pipefail -o posix + +# Copyright (c) 2019-2025 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +# shellcheck source=ci/lib/ci.lib.sh +source "$(dirname "$0")/../lib/ci.lib.sh" + +function ci_shellify_shell { + # Convert shell scripting text to shell scripting text. + # Select only the easy-to-parse version definitions. + sed -n -e '/^ *[A-Za-z_][0-9A-Za-z_]*=[0-9][^ #]* *$/ p' | + sed -e 's/^ *\([^ ]*=[^ ]*\) *$/export \1;/' +} + +function usage { + echo "usage: $CI_SCRIPT_NAME [] libpng-config-head.in" + echo "options: -?|-h|--help" + exit "${@:-0}" +} + +function main { + local opt + while getopts ":" opt + do + # This ain't a while-loop. It only pretends to be. + [[ $1 == -[?h]* || $1 == --help || $1 == --help=* ]] && usage 0 + ci_err "unknown option: '$1'" + done + shift $((OPTIND - 1)) + [[ $# -eq 0 ]] && usage 2 + [[ $# -eq 1 ]] || ci_err "too many operands" + # And... go! + test -e "$1" || ci_err "no such file: '$1'" + [[ $(basename -- "$1") == libpng-config-head.in ]] || { + ci_err "incorrect operand: '$1' (expecting: 'libpng-config-head.in')" + } + ci_shellify_shell <"$1" +} + +main "$@" diff --git a/vendor/libpng/compile b/vendor/libpng/compile index 49b3d05fde..02ff093c33 100644 --- a/vendor/libpng/compile +++ b/vendor/libpng/compile @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2024-06-19.01; # UTC +scriptversion=2025-06-18.21; # UTC -# Copyright (C) 1999-2024 Free Software Foundation, Inc. +# Copyright (C) 1999-2025 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -37,11 +37,11 @@ IFS=" "" $nl" file_conv= -# func_file_conv build_file lazy +# func_file_conv build_file unneeded_conversions # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. +# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no +# conversion will take place. func_file_conv () { file=$1 @@ -51,9 +51,20 @@ func_file_conv () # lazily determine how to convert abs files case `uname -s` in MINGW*) - file_conv=mingw + if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then + # MSYS2 environment. + file_conv=cygwin + else + # Original MinGW environment. + file_conv=mingw + fi ;; - CYGWIN* | MSYS*) + MSYS*) + # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell. + file_conv=cygwin + ;; + CYGWIN*) + # Cygwin environment. file_conv=cygwin ;; *) @@ -63,12 +74,14 @@ func_file_conv () fi case $file_conv/,$2, in *,$file_conv,*) + # This is the optimization mentioned above: + # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert. ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/* | msys/*) - file=`cygpath -m "$file" || echo "$file"` + cygwin/*) + file=`cygpath -w "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` @@ -343,9 +356,9 @@ exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/vendor/libpng/config.guess b/vendor/libpng/config.guess index f6d217a49f..48a684601b 100644 --- a/vendor/libpng/config.guess +++ b/vendor/libpng/config.guess @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2024-01-01' +timestamp='2024-07-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -123,7 +123,7 @@ set_cc_for_build() { dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" - for driver in cc gcc c89 c99 ; do + for driver in cc gcc c17 c99 c89 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break @@ -634,7 +634,8 @@ EOF sed 's/^ //' << EOF > "$dummy.c" #include - main() + int + main () { if (!__power_pc()) exit(1); @@ -718,7 +719,8 @@ EOF #include #include - int main () + int + main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); @@ -1621,6 +1623,7 @@ cat > "$dummy.c" <&2 exit 1 ;; - kfreebsd*-gnu*- | kopensolaris*-gnu*-) + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) ;; vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) ;; @@ -1864,6 +2245,8 @@ case $kernel-$os-$obj in ;; os2-emx-) ;; + rtmk-nova-) + ;; *-eabi*- | *-gnueabi*-) ;; none--*) @@ -1890,7 +2273,7 @@ case $vendor in *-riscix*) vendor=acorn ;; - *-sunos*) + *-sunos* | *-solaris*) vendor=sun ;; *-cnk* | *-aix*) diff --git a/vendor/libpng/configure b/vendor/libpng/configure index bd274ab9fb..5d0c3243bd 100644 --- a/vendor/libpng/configure +++ b/vendor/libpng/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for libpng 1.6.47. +# Generated by GNU Autoconf 2.72 for libpng 1.6.50. # # Report bugs to . # @@ -614,8 +614,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libpng' PACKAGE_TARNAME='libpng' -PACKAGE_VERSION='1.6.47' -PACKAGE_STRING='libpng 1.6.47' +PACKAGE_VERSION='1.6.50' +PACKAGE_STRING='libpng 1.6.50' PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net' PACKAGE_URL='' @@ -656,6 +656,8 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +PNG_RISCV_RVV_FALSE +PNG_RISCV_RVV_TRUE PNG_LOONGARCH_LSX_FALSE PNG_LOONGARCH_LSX_TRUE PNG_POWERPC_VSX_FALSE @@ -858,6 +860,7 @@ enable_mips_mmi enable_intel_sse enable_powerpc_vsx enable_loongarch_lsx +enable_riscv_rvv ' ac_precious_vars='build_alias host_alias @@ -1421,7 +1424,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures libpng 1.6.47 to adapt to many kinds of systems. +'configure' configures libpng 1.6.50 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1492,7 +1495,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libpng 1.6.47:";; + short | recursive ) echo "Configuration of libpng 1.6.50:";; esac cat <<\_ACEOF @@ -1590,6 +1593,12 @@ Optional Features: no/off: disable the optimizations; yes/on: turn on unconditionally. If not specified: determined by the compiler. + --enable-riscv-rvv Enable RISC-V Vector optimizations: =no/off, check, + api, yes/on: no/off: disable the optimizations; + check: use internal checking code api: disable by + default, enable by a call to png_set_option yes/on: + turn on. If not specified: determined by the + compiler. Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1689,7 +1698,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libpng configure 1.6.47 +libpng configure 1.6.50 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -1952,7 +1961,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libpng $as_me 1.6.47, which was +It was created by libpng $as_me 1.6.50, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -2733,7 +2742,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # dist-xz requires automake 1.11 or later # 1.12.2 fixes a security issue in 1.11.2 and 1.12.1 # 1.13 is required for parallel tests -am__api_version='1.17' +am__api_version='1.18' @@ -3003,10 +3012,14 @@ am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac @@ -3433,7 +3446,7 @@ fi # Define the identity of the package. PACKAGE='libpng' - VERSION='1.6.47' + VERSION='1.6.50' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -3471,9 +3484,133 @@ AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf "%s\n" "$am_cv_prog_tar_ustar" >&6; } @@ -3528,10 +3665,10 @@ fi -PNGLIB_VERSION=1.6.47 +PNGLIB_VERSION=1.6.50 PNGLIB_MAJOR=1 PNGLIB_MINOR=6 -PNGLIB_RELEASE=47 +PNGLIB_RELEASE=50 @@ -4611,7 +4748,10 @@ _ACEOF break fi done - rm -f core conftest* + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM unset am_i ;; esac fi @@ -15156,6 +15296,10 @@ printf "%s\n" "#define PNG_INTEL_SSE_OPT 0" >>confdefs.h printf "%s\n" "#define PNG_LOONGARCH_LSX_OPT 0" >>confdefs.h + enable_riscv_rvv=no + +printf "%s\n" "#define PNG_RISCV_RVV_OPT 0" >>confdefs.h + ;; *) # allow enabling hardware optimization on any system: @@ -15193,6 +15337,12 @@ printf "%s\n" "#define PNG_POWERPC_VSX_OPT 2" >>confdefs.h printf "%s\n" "#define PNG_LOONGARCH_LSX_OPT 1" >>confdefs.h + ;; + riscv64) + enable_riscv_rvv=yes + +printf "%s\n" "#define PNG_RISCV_RVV_OPT 2" >>confdefs.h + ;; esac ;; @@ -15550,6 +15700,97 @@ else fi +# RISC-V +# ====== +# +# RISC-V Vector support. + +# Check whether --enable-riscv-rvv was given. +if test ${enable_riscv_rvv+y} +then : + enableval=$enable_riscv_rvv; case "$enableval" in + no|off) + # disable the default enabling on __riscv systems: + +printf "%s\n" "#define PNG_RISCV_RVV_OPT 0" >>confdefs.h + + # Prevent inclusion of the platform-specific files below: + enable_riscv_rvv=no ;; + yes|on) + +printf "%s\n" "#define PNG_RISCV_RVV_OPT 2" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-riscv-rvv: + if you want the optimizations pass e.g. '-march=rv64gv1p0' to the compiler." >&5 +printf "%s\n" "$as_me: WARNING: --enable-riscv-rvv: + if you want the optimizations pass e.g. '-march=rv64gv1p0' to the compiler." >&2;};; + *) + as_fn_error $? "--enable-riscv-rvv=${enable_riscv_rvv}: invalid value" "$LINENO" 5 + esac +fi + + +if test "$enable_riscv_rvv" != "no" && + case "$host_cpu" in + riscv64) : ;; + *) test "$enable_riscv_rvv" != '' ;; + esac +then + compiler_support_riscv_rvv=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use RISC-V RVV intrinsics" >&5 +printf %s "checking whether to use RISC-V RVV intrinsics... " >&6; } + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#ifndef COMPAT_HWCAP_ISA_V /* added in linux-6.5 */ +#error "COMPAT_HWCAP_ISA_V is not available" +#endif +int main() { + const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f }; + uint64_t ptr[2] = {0x0908060504020100, 0xFFFFFFFF0E0D0C0A}; + vuint8m1_t a = __riscv_vreinterpret_v_u64m1_u8m1(__riscv_vle64_v_u64m1(ptr, 2)); + vfloat32m1_t val = __riscv_vle32_v_f32m1((const float*)(src), 4); + return (int)__riscv_vfmv_f_s_f32m1_f32(val); +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + compiler_support_riscv_rvv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $compiler_support_riscv_rvv" >&5 +printf "%s\n" "$compiler_support_riscv_rvv" >&6; } + if test "$compiler_support_riscv_rvv" = "yes"; then + +printf "%s\n" "#define PNG_RISCV_RVV_OPT 1" >>confdefs.h + + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Compiler does not support riscv rvv." >&5 +printf "%s\n" "$as_me: WARNING: Compiler does not support riscv rvv." >&2;} + fi +fi + +# Add RISC-V-specific files to all builds where $host_cpu is riscv ('riscv64') +# or where RISC-V optimizations were explicitly requested (this allows a fallback +# if a future host CPU does not match 'riscv64') + + if test "$enable_riscv_rvv" != "no" && + test "$compiler_support_riscv_rvv" = "yes" && + case "$host_cpu" in + riscv64) : ;; + *) test "$compiler_support_riscv_rvv" != '' ;; + esac; then + PNG_RISCV_RVV_TRUE= + PNG_RISCV_RVV_FALSE='#' +else + PNG_RISCV_RVV_TRUE='#' + PNG_RISCV_RVV_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Extra options for compiler: $PNG_COPTS" >&5 printf "%s\n" "$as_me: Extra options for compiler: $PNG_COPTS" >&6;} @@ -15772,6 +16013,10 @@ if test -z "${PNG_LOONGARCH_LSX_TRUE}" && test -z "${PNG_LOONGARCH_LSX_FALSE}"; as_fn_error $? "conditional \"PNG_LOONGARCH_LSX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${PNG_RISCV_RVV_TRUE}" && test -z "${PNG_RISCV_RVV_FALSE}"; then + as_fn_error $? "conditional \"PNG_RISCV_RVV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 @@ -16165,7 +16410,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libpng $as_me 1.6.47, which was +This file was extended by libpng $as_me 1.6.50, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16233,7 +16478,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libpng config.status 1.6.47 +libpng config.status 1.6.50 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/vendor/libpng/configure.ac b/vendor/libpng/configure.ac index df48325e00..9d68164bac 100644 --- a/vendor/libpng/configure.ac +++ b/vendor/libpng/configure.ac @@ -25,7 +25,7 @@ AC_PREREQ([2.68]) dnl Version number stuff here: -AC_INIT([libpng],[1.6.47],[png-mng-implement@lists.sourceforge.net]) +AC_INIT([libpng],[1.6.50],[png-mng-implement@lists.sourceforge.net]) AC_CONFIG_MACRO_DIR([scripts/autoconf]) # libpng does not follow GNU file name conventions (hence 'foreign') @@ -46,10 +46,10 @@ dnl automake, so the following is not necessary (and is not defined anyway): dnl AM_PREREQ([1.11.2]) dnl stop configure from automagically running automake -PNGLIB_VERSION=1.6.47 +PNGLIB_VERSION=1.6.50 PNGLIB_MAJOR=1 PNGLIB_MINOR=6 -PNGLIB_RELEASE=47 +PNGLIB_RELEASE=50 dnl End of version number stuff @@ -343,6 +343,9 @@ AC_ARG_ENABLE([hardware-optimizations], enable_loongarch_lsx=no AC_DEFINE([PNG_LOONGARCH_LSX_OPT], [0], [Disable LOONGARCH_LSX optimizations]) + enable_riscv_rvv=no + AC_DEFINE([PNG_RISCV_RVV_OPT], [0], + [Disable RISC-V Vector optimizations]) ;; *) # allow enabling hardware optimization on any system: @@ -375,6 +378,11 @@ AC_ARG_ENABLE([hardware-optimizations], AC_DEFINE([PNG_LOONGARCH_LSX_OPT], [1], [Enable LOONGARCH_LSX optimizations]) ;; + riscv64) + enable_riscv_rvv=yes + AC_DEFINE([PNG_RISCV_RVV_OPT], [2], + [Enable RISC-V Vector optimizations]) + ;; esac ;; esac]) @@ -661,6 +669,76 @@ AM_CONDITIONAL([PNG_LOONGARCH_LSX], *) test "$enable_loongarch_lsx" != '' ;; esac]) +# RISC-V +# ====== +# +# RISC-V Vector support. + +AC_ARG_ENABLE([riscv-rvv], +AS_HELP_STRING([[[--enable-riscv-rvv]]], + [Enable RISC-V Vector optimizations: =no/off, check, api, yes/on:] + [no/off: disable the optimizations; check: use internal checking code] + [api: disable by default, enable by a call to png_set_option] + [yes/on: turn on. If not specified: determined by the compiler.]), + [case "$enableval" in + no|off) + # disable the default enabling on __riscv systems: + AC_DEFINE([PNG_RISCV_RVV_OPT], [0], + [Disable RISC-V Vector optimizations]) + # Prevent inclusion of the platform-specific files below: + enable_riscv_rvv=no ;; + yes|on) + AC_DEFINE([PNG_RISCV_RVV_OPT], [2], + [Enable RISC-V Vector optimizations]) + AC_MSG_WARN([--enable-riscv-rvv:] + [if you want the optimizations pass e.g. '-march=rv64gv1p0' to the compiler.]);; + *) + AC_MSG_ERROR([--enable-riscv-rvv=${enable_riscv_rvv}: invalid value]) + esac]) + +if test "$enable_riscv_rvv" != "no" && + case "$host_cpu" in + riscv64) : ;; + *) test "$enable_riscv_rvv" != '' ;; + esac +then + compiler_support_riscv_rvv=no + AC_MSG_CHECKING(whether to use RISC-V RVV intrinsics) + + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#ifndef COMPAT_HWCAP_ISA_V /* added in linux-6.5 */ +#error "COMPAT_HWCAP_ISA_V is not available" +#endif +int main() { + const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f }; + uint64_t ptr[2] = {0x0908060504020100, 0xFFFFFFFF0E0D0C0A}; + vuint8m1_t a = __riscv_vreinterpret_v_u64m1_u8m1(__riscv_vle64_v_u64m1(ptr, 2)); + vfloat32m1_t val = __riscv_vle32_v_f32m1((const float*)(src), 4); + return (int)__riscv_vfmv_f_s_f32m1_f32(val); +}]])],compiler_support_riscv_rvv=yes) + AC_MSG_RESULT($compiler_support_riscv_rvv) + if test "$compiler_support_riscv_rvv" = "yes"; then + AC_DEFINE([PNG_RISCV_RVV_OPT], [1], + [Enable RISCV RVV optimizations]) + else + AC_MSG_WARN([Compiler does not support riscv rvv.]) + fi +fi + +# Add RISC-V-specific files to all builds where $host_cpu is riscv ('riscv64') +# or where RISC-V optimizations were explicitly requested (this allows a fallback +# if a future host CPU does not match 'riscv64') + +AM_CONDITIONAL([PNG_RISCV_RVV], + [test "$enable_riscv_rvv" != "no" && + test "$compiler_support_riscv_rvv" = "yes" && + case "$host_cpu" in + riscv64) : ;; + *) test "$compiler_support_riscv_rvv" != '' ;; + esac]) + AC_MSG_NOTICE([[Extra options for compiler: $PNG_COPTS]]) # Config files, substituting as above diff --git a/vendor/libpng/contrib/conftest/read-full.dfa b/vendor/libpng/contrib/conftest/read-full.dfa new file mode 100644 index 0000000000..4860f83dd6 --- /dev/null +++ b/vendor/libpng/contrib/conftest/read-full.dfa @@ -0,0 +1,13 @@ +# read-full.dfa +# Build time configuration of libpng +# +# Author: John Bowler +# Copyright: (c) John Bowler, 2025 +# Usage rights: +# To the extent possible under law, the author has waived all copyright and +# related or neighboring rights to this work. This work is published from: +# United States. +# +# Build libpng with no write support and full read support. +# +option WRITE off diff --git a/vendor/libpng/contrib/conftest/write-full.dfa b/vendor/libpng/contrib/conftest/write-full.dfa new file mode 100644 index 0000000000..2daf0b0551 --- /dev/null +++ b/vendor/libpng/contrib/conftest/write-full.dfa @@ -0,0 +1,13 @@ +# write-full.dfa +# Build time configuration of libpng +# +# Author: John Bowler +# Copyright: (c) John Bowler, 2025 +# Usage rights: +# To the extent possible under law, the author has waived all copyright and +# related or neighboring rights to this work. This work is published from: +# United States. +# +# Build libpng with no read support and full write support. +# +option READ off diff --git a/vendor/libpng/contrib/examples/.clang-format b/vendor/libpng/contrib/examples/.clang-format new file mode 100644 index 0000000000..eb26af615a --- /dev/null +++ b/vendor/libpng/contrib/examples/.clang-format @@ -0,0 +1,143 @@ +--- +Language: Cpp +AccessModifierOffset: -3 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false +AlignConsecutiveBitFields: + Enabled: false +AlignConsecutiveDeclarations: + Enabled: false +AlignConsecutiveMacros: + Enabled: false +AlignConsecutiveShortCaseStatements: + Enabled: false +AlignEscapedNewlines: DontAlign +AlignOperands: false +AlignTrailingComments: + Kind: Never + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseExpressionOnASingleLine: true +AllowShortCaseLabelsOnASingleLine: true +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AllowShortNamespacesOnASingleLine: false +AlwaysBreakBeforeMultilineStrings: false +BinPackArguments: true +BinPackParameters: BinPack +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: Always + AfterEnum: true + AfterExternBlock: false + AfterFunction: true + AfterNamespace: false + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: true + BeforeCatch: true + BeforeElse: true + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakAfterReturnType: TopLevel +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Custom +BreakBeforeTernaryOperators: false +BreakStringLiterals: false +BreakTemplateDeclarations: MultiLine +ColumnLimit: 79 +ContinuationIndentWidth: 3 +DerivePointerAlignment: true +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +FixNamespaceComments: true +IncludeBlocks: Preserve +IndentAccessModifiers: false +IndentCaseBlocks: true +IndentCaseLabels: true +IndentExportBlock: true +IndentExternBlock: AfterExternBlock +IndentGotoLabels: false +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 3 +IndentWrappedFunctionNames: false +KeepEmptyLines: + AtEndOfFile: false + AtStartOfBlock: false + AtStartOfFile: false +KeepFormFeed: false +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: None +PackConstructorInitializers: Never +PointerAlignment: Left +QualifierAlignment: Custom +QualifierOrder: [static, inline, constexpr, const, volatile, restrict, type] +ReferenceAlignment: Pointer +ReflowComments: Never +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SortIncludes: false +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + ExceptDoubleParentheses: false + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +TabWidth: 8 +UseTab: Never +WrapNamespaceBodyWithEmptyLines: Leave +... diff --git a/vendor/libpng/contrib/examples/iccfrompng.c b/vendor/libpng/contrib/examples/iccfrompng.c index 0f86714a81..0e095abb1d 100644 --- a/vendor/libpng/contrib/examples/iccfrompng.c +++ b/vendor/libpng/contrib/examples/iccfrompng.c @@ -26,8 +26,9 @@ #include -#if defined(PNG_READ_SUPPORTED) && defined(PNG_STDIO_SUPPORTED) && \ - defined (PNG_iCCP_SUPPORTED) +#if !defined(PNG_iCCP_SUPPORTED) || !defined(PNG_READ_SUPPORTED) +#error This program requires libpng supporting the iCCP chunk and the read API +#endif static int verbose = 1; @@ -36,7 +37,8 @@ static png_byte no_profile[] = "no profile"; static png_bytep extract(FILE *fp, png_uint_32 *proflen) { - png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,0,0,0); + png_structp png_ptr = + png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); png_infop info_ptr = NULL; png_bytep result = NULL; @@ -69,7 +71,7 @@ extract(FILE *fp, png_uint_32 *proflen) png_bytep profile; if (png_get_iCCP(png_ptr, info_ptr, &name, &compression_type, &profile, - proflen) & PNG_INFO_iCCP) + proflen) & PNG_INFO_iCCP) { result = malloc(*proflen); if (result != NULL) @@ -107,7 +109,7 @@ extract_one_file(const char *filename) const char *ep = strrchr(filename, '.'); if (ep != NULL) - len = ep-filename; + len = ep - filename; else len = strlen(filename); @@ -119,14 +121,14 @@ extract_one_file(const char *filename) FILE *of; memcpy(output, filename, len); - strcpy(output+len, ".icc"); + strcpy(output + len, ".icc"); of = fopen(output, "wb"); if (of != NULL) { if (fwrite(profile, proflen, 1, of) == 1 && - fflush(of) == 0 && - fclose(of) == 0) + fflush(of) == 0 && + fclose(of) == 0) { if (verbose) printf("%s -> %s\n", filename, output); @@ -161,6 +163,9 @@ extract_one_file(const char *filename) else fprintf(stderr, "%s: could not open file\n", filename); + if (fp != NULL) + fclose(fp); + return result; } @@ -170,7 +175,7 @@ main(int argc, char **argv) int i; int extracted = 0; - for (i=1; i #include @@ -27,34 +27,37 @@ */ #include "../../png.h" -#if defined(PNG_READ_SUPPORTED) && defined(PNG_SEQUENTIAL_READ_SUPPORTED) +#if !defined(PNG_READ_SUPPORTED) || !defined(PNG_SEQUENTIAL_READ_SUPPORTED) +#error This program requires libpng supporting the read and sequential read API +#endif + /* Return component 'c' of pixel 'x' from the given row. */ static unsigned int component(png_const_bytep row, png_uint_32 x, unsigned int c, - unsigned int bit_depth, unsigned int channels) + unsigned int bit_depth, unsigned int channels) { - /* PNG images can be up to 2^31 pixels wide, but this means they can be up to - * 2^37 bits wide (for a 64-bit pixel - the largest possible) and hence 2^34 - * bytes wide. Since the row fitted into memory, however, the following must + /* PNG images can be up to 2^31 pixels wide, which means they can be up to + * 2^37 bits wide (for a 64-bit pixel - the largest possible) and hence + * 2^34 bytes wide. Since the row fitted into memory, the following must * work: */ png_uint_32 bit_offset_hi = bit_depth * ((x >> 6) * channels); png_uint_32 bit_offset_lo = bit_depth * ((x & 0x3f) * channels + c); - row = (png_const_bytep)(((const png_byte (*)[8])row) + bit_offset_hi); + row = (png_const_bytep)(((const png_byte(*)[8])row) + bit_offset_hi); row += bit_offset_lo >> 3; bit_offset_lo &= 0x07; /* PNG pixels are packed into bytes to put the first pixel in the highest - * bits of the byte and into two bytes for 16-bit values with the high 8 bits - * first, so: + * bits of the byte, and into two bytes for 16-bit values with the high + * 8 bits first, so: */ switch (bit_depth) { - case 1: return (row[0] >> (7-bit_offset_lo)) & 0x01; - case 2: return (row[0] >> (6-bit_offset_lo)) & 0x03; - case 4: return (row[0] >> (4-bit_offset_lo)) & 0x0f; + case 1: return (row[0] >> (7 - bit_offset_lo)) & 0x01; + case 2: return (row[0] >> (6 - bit_offset_lo)) & 0x03; + case 4: return (row[0] >> (4 - bit_offset_lo)) & 0x0f; case 8: return row[0]; case 16: return (row[0] << 8) + row[1]; default: @@ -71,7 +74,7 @@ component(png_const_bytep row, png_uint_32 x, unsigned int c, */ static void print_pixel(png_structp png_ptr, png_infop info_ptr, png_const_bytep row, - png_uint_32 x) + png_uint_32 x) { unsigned int bit_depth = png_get_bit_depth(png_ptr, info_ptr); @@ -92,22 +95,24 @@ print_pixel(png_structp png_ptr, png_infop info_ptr, png_const_bytep row, int num_palette = 0; if ((png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette) & - PNG_INFO_PLTE) && num_palette > 0 && palette != NULL) + PNG_INFO_PLTE) && + (num_palette > 0) && + (palette != NULL)) { png_bytep trans_alpha = NULL; int num_trans = 0; if ((png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, - NULL) & PNG_INFO_tRNS) && num_trans > 0 && - trans_alpha != NULL) + NULL) & PNG_INFO_tRNS) && + (num_trans > 0) && + (trans_alpha != NULL)) printf("INDEXED %u = %d %d %d %d\n", index, - palette[index].red, palette[index].green, - palette[index].blue, - index < num_trans ? trans_alpha[index] : 255); + palette[index].red, palette[index].green, + palette[index].blue, + index < num_trans ? trans_alpha[index] : 255); else /* no transparency */ - printf("INDEXED %u = %d %d %d\n", index, - palette[index].red, palette[index].green, - palette[index].blue); + printf("INDEXED %u = %d %d %d\n", index, palette[index].red, + palette[index].green, palette[index].blue); } else @@ -117,20 +122,20 @@ print_pixel(png_structp png_ptr, png_infop info_ptr, png_const_bytep row, case PNG_COLOR_TYPE_RGB: printf("RGB %u %u %u\n", component(row, x, 0, bit_depth, 3), - component(row, x, 1, bit_depth, 3), - component(row, x, 2, bit_depth, 3)); + component(row, x, 1, bit_depth, 3), + component(row, x, 2, bit_depth, 3)); return; case PNG_COLOR_TYPE_GRAY_ALPHA: printf("GRAY+ALPHA %u %u\n", component(row, x, 0, bit_depth, 2), - component(row, x, 1, bit_depth, 2)); + component(row, x, 1, bit_depth, 2)); return; case PNG_COLOR_TYPE_RGB_ALPHA: printf("RGBA %u %u %u %u\n", component(row, x, 0, bit_depth, 4), - component(row, x, 1, bit_depth, 4), - component(row, x, 2, bit_depth, 4), - component(row, x, 3, bit_depth, 4)); + component(row, x, 1, bit_depth, 4), + component(row, x, 2, bit_depth, 4), + component(row, x, 3, bit_depth, 4)); return; default: @@ -138,7 +143,8 @@ print_pixel(png_structp png_ptr, png_infop info_ptr, png_const_bytep row, } } -int main(int argc, const char **argv) +int +main(int argc, const char **argv) { /* This program uses the default, based, libpng error handling * mechanism, therefore any local variable that exists before the call to @@ -146,7 +152,7 @@ int main(int argc, const char **argv) * be declared with 'volatile' to ensure that their values don't get * destroyed by longjmp: */ - volatile int result = 1/*fail*/; + volatile int result = 1 /*fail*/; if (argc == 4) { @@ -163,8 +169,8 @@ int main(int argc, const char **argv) * writes error messages to stderr. Creating the png_struct is a * little tricky; just copy the following code. */ - png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, - NULL, NULL, NULL); + png_structp png_ptr = + png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (png_ptr != NULL) { @@ -184,11 +190,11 @@ int main(int argc, const char **argv) compression_method, filter_method; png_bytep row_tmp; - /* Now associate the recently opened (FILE*) with the default - * libpng initialization functions. Sometimes libpng is - * compiled without stdio support (it can be difficult to do - * in some environments); in that case you will have to write - * your own read callback to read data from the (FILE*). + /* Now associate the recently opened FILE object with the + * default libpng initialization functions. Sometimes libpng + * is compiled without stdio support (it can be difficult to + * do in some environments); in that case you will have to + * write your own read callback to read data from the stream. */ png_init_io(png_ptr, f); @@ -202,21 +208,21 @@ int main(int argc, const char **argv) * space. In this case png_malloc is used - it will not * return if memory isn't available. */ - row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, - info_ptr)); + row = + png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr)); - /* To avoid the overhead of using a volatile auto copy row_tmp + /* Avoid the overhead of using a volatile auto copy row_tmp * to a local here - just use row for the png_free below. */ row_tmp = row; - /* All the information we need is in the header is returned by - * png_get_IHDR, if this fails we can now use 'png_error' to + /* All the information we need is in the header returned by + * png_get_IHDR. If this fails, we can use 'png_error' to * signal the error and return control to the setjmp above. */ if (png_get_IHDR(png_ptr, info_ptr, &width, &height, - &bit_depth, &color_type, &interlace_method, - &compression_method, &filter_method)) + &bit_depth, &color_type, &interlace_method, + &compression_method, &filter_method)) { int passes, pass; @@ -242,7 +248,7 @@ int main(int argc, const char **argv) /* Now read the pixels, pass-by-pass, row-by-row: */ png_start_read_image(png_ptr); - for (pass=0; pass #include @@ -20,10 +20,15 @@ * ensure the code picks up the local libpng implementation: */ #include "../../png.h" -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) && \ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) -int main(int argc, const char **argv) +#if !defined(PNG_SIMPLIFIED_READ_SUPPORTED) || \ + !defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) +#error This program requires libpng supporting the simplified read/write API +#endif + + +int +main(int argc, const char **argv) { int result = 1; @@ -48,22 +53,22 @@ int main(int argc, const char **argv) if (buffer != NULL) { - if (png_image_finish_read(&image, NULL/*background*/, buffer, - 0/*row_stride*/, NULL/*colormap for PNG_FORMAT_FLAG_COLORMAP */)) + if (png_image_finish_read(&image, NULL /*background*/, buffer, + 0 /*row_stride*/, NULL /*colormap */)) { - if (png_image_write_to_file(&image, argv[2], - 0/*convert_to_8bit*/, buffer, 0/*row_stride*/, - NULL/*colormap*/)) + if (png_image_write_to_file( + &image, argv[2], 0 /*convert_to_8bit*/, buffer, + 0 /*row_stride*/, NULL /*colormap*/)) result = 0; else fprintf(stderr, "pngtopng: write %s: %s\n", argv[2], - image.message); + image.message); } else fprintf(stderr, "pngtopng: read %s: %s\n", argv[1], - image.message); + image.message); free(buffer); } @@ -71,7 +76,7 @@ int main(int argc, const char **argv) else { fprintf(stderr, "pngtopng: out of memory: %lu bytes\n", - (unsigned long)PNG_IMAGE_SIZE(image)); + (unsigned long)PNG_IMAGE_SIZE(image)); /* This is the only place where a 'free' is required; libpng does * the cleanup on error and success, but in this case we couldn't @@ -93,4 +98,3 @@ int main(int argc, const char **argv) return result; } -#endif /* READ && WRITE */ diff --git a/vendor/libpng/contrib/examples/simpleover.c b/vendor/libpng/contrib/examples/simpleover.c index 59dd313688..8dc9fecbde 100644 --- a/vendor/libpng/contrib/examples/simpleover.c +++ b/vendor/libpng/contrib/examples/simpleover.c @@ -6,9 +6,9 @@ * United States. * * Read several PNG files, which should have an alpha channel or transparency - * information, and composite them together to produce one or more 16-bit linear - * RGBA intermediates. This involves doing the correct 'over' composition to - * combine the alpha channels and corresponding data. + * information, and composite them together to produce one or more 16-bit + * linear RGBA intermediates. This involves doing the 'over' compositing + * operation to combine the alpha channels and corresponding data. * * Finally read an output (background) PNG using the 24-bit RGB format (the * PNG will be composited on green (#00ff00) by default if it has an alpha @@ -28,8 +28,8 @@ * correctly. Apart from the libpng Simplified API the only work done in here * is to combine multiple input PNG images into a single sprite; this involves * a Porter-Duff 'over' operation and the input PNG images may, as a result, - * be regarded as being layered one on top of the other with the first (leftmost - * on the command line) being at the bottom and the last on the top. + * be regarded as being layered one on top of the other with the first + * (leftmost on the command line) being at the bottom and the last on the top. */ #include #include @@ -44,54 +44,61 @@ */ #include "../../png.h" -#ifdef PNG_SIMPLIFIED_READ_SUPPORTED +#if !defined(PNG_SIMPLIFIED_READ_SUPPORTED) +#error This program requires libpng supporting the simplified read API +#endif #define sprite_name_chars 15 -struct sprite { - FILE *file; - png_uint_16p buffer; - unsigned int width; - unsigned int height; - char name[sprite_name_chars+1]; +struct sprite +{ + FILE *file; + png_uint_16p buffer; + unsigned int width; + unsigned int height; + char name[sprite_name_chars + 1]; }; #if 0 /* div by 65535 test program */ #include #include -int main(void) { +int +main(void) +{ double err = 0; unsigned int xerr = 0; unsigned int r = 32769; - { - unsigned int x = 0; + unsigned int x = 0; - do { - unsigned int t = x + (x >> 16) /*+ (x >> 31)*/ + r; - double v = x, errtest; + do + { + unsigned int t = x + (x >> 16) /*+ (x >> 31)*/ + r; + double v = x, errtest; - if (t < x) { - fprintf(stderr, "overflow: %u+%u -> %u\n", x, r, t); - return 1; - } + if (t < x) + { + fprintf(stderr, "overflow: %u+%u -> %u\n", x, r, t); + return 1; + } - v /= 65535; - errtest = v; - t >>= 16; - errtest -= t; + v /= 65535; + errtest = v; + t >>= 16; + errtest -= t; - if (errtest > err) { - err = errtest; - xerr = x; + if (errtest > err) + { + err = errtest; + xerr = x; - if (errtest >= .5) { - fprintf(stderr, "error: %u/65535 = %f, not %u, error %f\n", - x, v, t, errtest); - return 0; - } + if (errtest >= .5) + { + fprintf(stderr, "error: %u/65535 = %f, not %u, error %f\n", + x, v, t, errtest); + return 0; } - } while (++x <= 65535U*65535U); - } + } + } while (++x <= 65535U * 65535U); printf("error %f @ %u\n", err, xerr); @@ -101,7 +108,7 @@ int main(void) { static void sprite_op(const struct sprite *sprite, int x_offset, int y_offset, - png_imagep image, const png_uint_16 *buffer) + png_imagep image, const png_uint_16 *buffer) { /* This is where the Porter-Duff 'Over' operator is evaluated; change this * code to change the operator (this could be parameterized). Any other @@ -112,8 +119,8 @@ sprite_op(const struct sprite *sprite, int x_offset, int y_offset, /* Check for an x or y offset that pushes any part of the image beyond the * right or bottom of the sprite: */ - if ((y_offset < 0 || (unsigned)/*SAFE*/y_offset < sprite->height) && - (x_offset < 0 || (unsigned)/*SAFE*/x_offset < sprite->width)) + if ((y_offset < 0 || /*SAFE*/ (unsigned)y_offset < sprite->height) && + (x_offset < 0 || /*SAFE*/ (unsigned)x_offset < sprite->width)) { unsigned int y = 0; @@ -130,7 +137,7 @@ sprite_op(const struct sprite *sprite, int x_offset, int y_offset, do { /* In and out are RGBA values, so: */ - const png_uint_16 *in_pixel = buffer + (y * image->width + x)*4; + const png_uint_16 *in_pixel = buffer + (y * image->width + x) * 4; png_uint_32 in_alpha = in_pixel[3]; /* This is the optimized Porter-Duff 'Over' operation, when the @@ -139,10 +146,10 @@ sprite_op(const struct sprite *sprite, int x_offset, int y_offset, if (in_alpha > 0) { png_uint_16 *out_pixel = sprite->buffer + - ((y+y_offset) * sprite->width + (x+x_offset))*4; + ((y + y_offset) * sprite->width + (x + x_offset)) * 4; /* This is the weight to apply to the output: */ - in_alpha = 65535-in_alpha; + in_alpha = 65535 - in_alpha; if (in_alpha > 0) { @@ -159,9 +166,9 @@ sprite_op(const struct sprite *sprite, int x_offset, int y_offset, */ png_uint_32 tmp; -# define compose(c)\ - tmp = out_pixel[c] * in_alpha;\ - tmp = (tmp + (tmp >> 16) + 32769) >> 16;\ +# define compose(c) \ + tmp = out_pixel[c] * in_alpha; \ + tmp = (tmp + (tmp >> 16) + 32769) >> 16; \ out_pixel[c] = tmp + in_pixel[c] /* The following is very vectorizable... */ @@ -172,15 +179,15 @@ sprite_op(const struct sprite *sprite, int x_offset, int y_offset, } else - out_pixel[0] = in_pixel[0], - out_pixel[1] = in_pixel[1], - out_pixel[2] = in_pixel[2], + { + out_pixel[0] = in_pixel[0]; + out_pixel[1] = in_pixel[1]; + out_pixel[2] = in_pixel[2]; out_pixel[3] = in_pixel[3]; + } } - } - while (++x < image->width); - } - while (++y < image->height); + } while (++x < image->width); + } while (++y < image->height); } } @@ -224,9 +231,8 @@ create_sprite(struct sprite *sprite, int *argc, const char ***argv) if (buffer != NULL) { - if (png_image_finish_read(&image, NULL/*background*/, buffer, - 0/*row_stride*/, - NULL/*colormap for PNG_FORMAT_FLAG_COLORMAP*/)) + if (png_image_finish_read(&image, NULL /*background*/, buffer, + 0 /*row_stride*/, NULL /*colormap*/)) { /* This is the place where the Porter-Duff 'Over' operator * needs to be done by this code. In fact, any image @@ -245,14 +251,14 @@ create_sprite(struct sprite *sprite, int *argc, const char ***argv) { free(buffer); fprintf(stderr, "simpleover: read %s: %s\n", (*argv)[0], - image.message); + image.message); } } else { fprintf(stderr, "simpleover: out of memory: %lu bytes\n", - (unsigned long)PNG_IMAGE_SIZE(image)); + (unsigned long)PNG_IMAGE_SIZE(image)); /* png_image_free must be called if we abort the Simplified API * read because of a problem detected in this code. If problems @@ -290,8 +296,9 @@ create_sprite(struct sprite *sprite, int *argc, const char ***argv) save.flags = PNG_IMAGE_FLAG_FAST; save.colormap_entries = 0; - if (png_image_write_to_stdio(&save, sprite->file, 1/*convert_to_8_bit*/, - sprite->buffer, 0/*row_stride*/, NULL/*colormap*/)) + if (png_image_write_to_stdio(&save, sprite->file, 1 /*convert_to_8_bit*/, + sprite->buffer, 0 /*row_stride*/, + NULL /*colormap*/)) { /* Success; the buffer is no longer needed: */ free(sprite->buffer); @@ -301,19 +308,20 @@ create_sprite(struct sprite *sprite, int *argc, const char ***argv) else fprintf(stderr, "simpleover: write sprite %s: %s\n", sprite->name, - save.message); + save.message); } else - fprintf(stderr, "simpleover: sprite %s: could not allocate tmpfile: %s\n", - sprite->name, strerror(errno)); + fprintf(stderr, + "simpleover: sprite %s: could not allocate tmpfile: %s\n", + sprite->name, strerror(errno)); return 0; /* fail */ } static int add_sprite(png_imagep output, png_bytep out_buf, struct sprite *sprite, - int *argc, const char ***argv) + int *argc, const char ***argv) { /* Given a --add argument naming this sprite, perform the operations listed * in the following arguments. The arguments are expected to have the form @@ -334,13 +342,13 @@ add_sprite(png_imagep output, png_bytep out_buf, struct sprite *sprite, * will fit. */ if (x < 0 || y < 0 || - (unsigned)/*SAFE*/x >= output->width || - (unsigned)/*SAFE*/y >= output->height || - sprite->width > output->width-x || - sprite->height > output->height-y) + /*SAFE*/ (unsigned)x >= output->width || + /*SAFE*/ (unsigned)y >= output->height || + sprite->width > output->width - x || + sprite->height > output->height - y) { fprintf(stderr, "simpleover: sprite %s @ (%d,%d) outside image\n", - sprite->name, x, y); + sprite->name, x, y); /* Could just skip this, but for the moment it is an error */ return 0; /* error */ } @@ -359,10 +367,10 @@ add_sprite(png_imagep output, png_bytep out_buf, struct sprite *sprite, { in.format = PNG_FORMAT_RGB; /* force compose */ - if (png_image_finish_read(&in, NULL/*background*/, - out_buf + (y*output->width + x)*3/*RGB*/, - output->width*3/*row_stride*/, - NULL/*colormap for PNG_FORMAT_FLAG_COLORMAP*/)) + if (png_image_finish_read( + &in, NULL /*background*/, + out_buf + (y * output->width + x) * 3 /*RGB*/, + output->width * 3 /*row_stride*/, NULL /*colormap*/)) { ++*argv, --*argc; continue; @@ -371,7 +379,7 @@ add_sprite(png_imagep output, png_bytep out_buf, struct sprite *sprite, /* The read failed: */ fprintf(stderr, "simpleover: add sprite %s: %s\n", sprite->name, - in.message); + in.message); return 0; /* error */ } } @@ -379,7 +387,7 @@ add_sprite(png_imagep output, png_bytep out_buf, struct sprite *sprite, else { fprintf(stderr, "simpleover: --add='%s': invalid position %s\n", - sprite->name, (*argv)[0]); + sprite->name, (*argv)[0]); return 0; /* error */ } } @@ -389,10 +397,10 @@ add_sprite(png_imagep output, png_bytep out_buf, struct sprite *sprite, static int simpleover_process(png_imagep output, png_bytep out_buf, int argc, - const char **argv) + const char **argv) { int result = 1; /* success */ -# define csprites 10/*limit*/ +# define csprites 10 /*limit*/ # define str(a) #a int nsprites = 0; struct sprite sprites[csprites]; @@ -412,23 +420,25 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc, sprites[nsprites].width = sprites[nsprites].height = 0; sprites[nsprites].name[0] = 0; - n = sscanf(argv[0], "--sprite=%u,%u,%" str(sprite_name_chars) "s%c", - &sprites[nsprites].width, &sprites[nsprites].height, - sprites[nsprites].name, &tombstone); + n = sscanf(argv[0], + "--sprite=%u,%u,%" str(sprite_name_chars) "s%c", + &sprites[nsprites].width, &sprites[nsprites].height, + sprites[nsprites].name, &tombstone); if ((n == 2 || n == 3) && - sprites[nsprites].width > 0 && sprites[nsprites].height > 0) + (sprites[nsprites].width > 0) && + (sprites[nsprites].height > 0)) { size_t buf_size, tmp; /* Default a name if not given. */ if (sprites[nsprites].name[0] == 0) - sprintf(sprites[nsprites].name, "sprite-%d", nsprites+1); + sprintf(sprites[nsprites].name, "sprite-%d", nsprites + 1); /* Allocate a buffer for the sprite and calculate the buffer * size: */ - buf_size = sizeof (png_uint_16 [4]); + buf_size = sizeof(png_uint_16[4]); buf_size *= sprites[nsprites].width; buf_size *= sprites[nsprites].height; @@ -437,7 +447,7 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc, tmp /= sprites[nsprites].width; tmp /= sprites[nsprites].height; - if (tmp == sizeof (png_uint_16 [4])) + if (tmp == sizeof(png_uint_16[4])) { sprites[nsprites].buffer = malloc(buf_size); /* This buffer must be initialized to transparent: */ @@ -448,7 +458,7 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc, sprites[nsprites].file = NULL; ++argv, --argc; - if (create_sprite(sprites+nsprites++, &argc, &argv)) + if (create_sprite(sprites + nsprites++, &argc, &argv)) { result = 1; /* still ok */ continue; @@ -466,7 +476,8 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc, else { fprintf(stderr, "simpleover: %s: invalid sprite (%u,%u)\n", - argv[0], sprites[nsprites].width, sprites[nsprites].height); + argv[0], + sprites[nsprites].width, sprites[nsprites].height); break; } } @@ -480,7 +491,7 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc, else if (strncmp(argv[0], "--add=", 6) == 0) { - const char *name = argv[0]+6; + const char *name = argv[0] + 6; int isprite = nsprites; ++argv, --argc; @@ -489,7 +500,8 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc, { if (strcmp(sprites[isprite].name, name) == 0) { - if (!add_sprite(output, out_buf, sprites+isprite, &argc, &argv)) + if (!add_sprite(output, out_buf, sprites + isprite, + &argc, &argv)) goto out; /* error in add_sprite */ break; @@ -498,7 +510,8 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc, if (isprite < 0) /* sprite not found */ { - fprintf(stderr, "simpleover: --add='%s': sprite not found\n", name); + fprintf(stderr, "simpleover: --add='%s': sprite not found\n", + name); break; } } @@ -526,7 +539,8 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc, return result; } -int main(int argc, const char **argv) +int +main(int argc, const char **argv) { int result = 1; /* default to fail */ @@ -536,7 +550,7 @@ int main(int argc, const char **argv) const char *output = NULL; png_image image; - if (argc > 2 && argv[2][0] != '-'/*an operation*/) + if (argc > 2 && argv[2][0] != '-' /*an operation*/) { output = argv[2]; argi = 3; @@ -558,7 +572,7 @@ int main(int argc, const char **argv) png_color background = {0, 0xff, 0}; /* fully saturated green */ if (png_image_finish_read(&image, &background, buffer, - 0/*row_stride*/, NULL/*colormap for PNG_FORMAT_FLAG_COLORMAP */)) + 0 /*row_stride*/, NULL /*colormap*/)) { /* At this point png_image_finish_read has cleaned up the * allocated data in png_image, and only the buffer needs to be @@ -566,22 +580,24 @@ int main(int argc, const char **argv) * * Perform the remaining operations: */ - if (simpleover_process(&image, buffer, argc-argi, argv+argi)) + if (simpleover_process(&image, buffer, + argc - argi, argv + argi)) { /* Write the output: */ if ((output != NULL && - png_image_write_to_file(&image, output, - 0/*convert_to_8bit*/, buffer, 0/*row_stride*/, - NULL/*colormap*/)) || + png_image_write_to_file( + &image, output, 0 /*convert_to_8bit*/, buffer, + 0 /*row_stride*/, NULL /*colormap*/)) || (output == NULL && - png_image_write_to_stdio(&image, stdout, - 0/*convert_to_8bit*/, buffer, 0/*row_stride*/, - NULL/*colormap*/))) + png_image_write_to_stdio( + &image, stdout, 0 /*convert_to_8bit*/, buffer, + 0 /*row_stride*/, NULL /*colormap*/))) result = 0; else fprintf(stderr, "simpleover: write %s: %s\n", - output == NULL ? "stdout" : output, image.message); + output == NULL ? "stdout" : output, + image.message); } /* else simpleover_process writes an error message */ @@ -589,7 +605,7 @@ int main(int argc, const char **argv) else fprintf(stderr, "simpleover: read %s: %s\n", argv[1], - image.message); + image.message); free(buffer); } @@ -597,7 +613,7 @@ int main(int argc, const char **argv) else { fprintf(stderr, "simpleover: out of memory: %lu bytes\n", - (unsigned long)PNG_IMAGE_SIZE(image)); + (unsigned long)PNG_IMAGE_SIZE(image)); /* This is the only place where a 'free' is required; libpng does * the cleanup on error and success, but in this case we couldn't @@ -617,7 +633,8 @@ int main(int argc, const char **argv) else { /* Usage message */ - fprintf(stderr, + fprintf( + stderr, "simpleover: usage: simpleover background.png [output.png]\n" " Output 'background.png' as a 24-bit RGB PNG file in 'output.png'\n" " or, if not given, stdout. 'background.png' will be composited\n" @@ -628,13 +645,13 @@ int main(int argc, const char **argv) " --sprite=width,height,name {[--at=x,y] {sprite.png}}\n" " Produce a transparent sprite of size (width,height) and with\n" " name 'name'.\n" - " For each sprite.png composite it using a Porter-Duff 'Over'\n" - " operation at offset (x,y) in the sprite (defaulting to (0,0)).\n" + " For each sprite.png composite it is using a Porter-Duff 'Over'\n" + " operation at offset (x,y) in the sprite, defaulting to (0,0).\n" " Input PNGs will be truncated to the area of the sprite.\n" "\n" " --add='name' {x,y}\n" " Optionally, before output, composite a sprite, 'name', which\n" - " must have been previously produced using --sprite, at each\n" + " must have been previously produced using --sprite at each\n" " offset (x,y) in the output image. Each sprite must fit\n" " completely within the output image.\n" "\n" @@ -645,4 +662,3 @@ int main(int argc, const char **argv) return result; } -#endif /* SIMPLIFIED_READ */ diff --git a/vendor/libpng/contrib/libtests/pngstest.c b/vendor/libpng/contrib/libtests/pngstest.c index 1d15421b52..efdcdbfef4 100644 --- a/vendor/libpng/contrib/libtests/pngstest.c +++ b/vendor/libpng/contrib/libtests/pngstest.c @@ -595,7 +595,8 @@ newimage(Image *image) memset(image, 0, sizeof *image); } -/* Reset the image to be read again - only needs to rewind the FILE* at present. +/* Reset the image to be read again - only needs to rewind the FILE object at + * present. */ static void resetimage(Image *image) diff --git a/vendor/libpng/contrib/riscv-rvv/README b/vendor/libpng/contrib/riscv-rvv/README new file mode 100644 index 0000000000..56b7cd284b --- /dev/null +++ b/vendor/libpng/contrib/riscv-rvv/README @@ -0,0 +1,85 @@ +OPERATING SYSTEM SPECIFIC RISC-V RVV DETECTION +---------------------------------------------- + +Detection of the ability to execute RISC-V Vector on a RISC-V processor +requires operating system support. (The information is not available in user +mode.) + +HOW TO USE THIS +--------------- + +This directory contains C code fragments that can be included in +riscv/riscv_init.c by setting the macro PNG_RISCV_RVV_FILE to the file name +in "" or <> at build time. This setting is not recorded in pnglibconf.h and +can be changed simply by rebuilding riscv/riscv_init.o with the required macro +definition. + +For any of this code to be used the RISC-V Vector code must be enabled and run +time checks must be supported. I.e.: + +#if PNG_RISCV_RVV_OPT > 0 +#ifdef PNG_RISCV_RVV_CHECK_SUPPORTED + +This is done in a 'configure' build by passing configure the argument: + + --enable-riscv-rvv=check + +Apart from the basic Linux implementation in contrib/riscv-rvv/linux.c this +code is unsupported. That means that it is not even compiled on a regular +basis and may be broken in any given minor release. + +FILE FORMAT +----------- + +Each file documents its testing status as of the last time it was tested (which +may have been a long time ago): + +STATUS: one of: + SUPPORTED: This indicates that the file is included in the regularly + performed test builds and bugs are fixed when discovered. + COMPILED: This indicates that the code did compile at least once. See the + more detailed description for the extent to which the result was + successful. + TESTED: This means the code was fully compiled into the libpng test programs + and these were run at least once. + +BUG REPORTS: an email address to which to send reports of problems + +The file is a fragment of C code. It should not define any 'extern' symbols; +everything should be static. It must define the function: + +static int png_have_rvv(png_structp png_ptr); + +That function must return 1 if RISC-V Vector instructions are supported, 0 if +not. It must not execute png_error unless it detects a bug. A png_error will +prevent the reading of the PNG and in the future, writing too. + +BUG REPORTS +----------- + +If you mail a bug report for any file that is not SUPPORTED there may only be +limited response. Consider fixing it and sending a patch to fix the problem - +this is more likely to result in action. + +CONTRIBUTIONS +------------- + +You may send contributions of new implementations to +png-mng-implement@sourceforge.net. Please write code in strict C90 C where +possible. Obviously OS dependencies are to be expected. If you submit code you +must have the authors permission and it must have a license that is acceptable +to the current maintainer; in particular that license must permit modification +and redistribution. + +Please try to make the contribution a single file and give the file a clear and +unambiguous name that identifies the target OS. If multiple files really are +required put them all in a sub-directory. + +You must also be prepared to handle bug reports from users of the code, either +by joining the png-mng-implement mailing list or by providing an email for the +"BUG REPORTS" entry or both. Please make sure that the header of the file +contains the STATUS and BUG REPORTS fields as above. + +Please list the OS requirements as precisely as possible. Ideally you should +also list the environment in which the code has been tested and certainly list +any environments where you suspect it might not work. diff --git a/vendor/libpng/contrib/riscv-rvv/linux.c b/vendor/libpng/contrib/riscv-rvv/linux.c new file mode 100644 index 0000000000..c3a0ff808a --- /dev/null +++ b/vendor/libpng/contrib/riscv-rvv/linux.c @@ -0,0 +1,36 @@ +/* contrib/riscv-rvv/linux.c + * + * Copyright (c) 2023 Google LLC + * Written by Dragoș Tiselice , May 2023. + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + * + * SEE contrib/riscv-rvv/README before reporting bugs + * + * STATUS: SUPPORTED + * BUG REPORTS: png-mng-implement@sourceforge.net + * + * png_have_rvv implemented for Linux by looking for COMPAT_HWCAP_ISA_V + * via hardware capabilites API. + * + * This code is strict ANSI-C and is probably moderately portable; it does + * however use and it assumes that /proc/cpuinfo is never localized. + */ + +#if defined(__linux__) +#include +#include +#endif + +static int +png_have_rvv() { +#if defined(__linux__) + return getauxval (AT_HWCAP) & COMPAT_HWCAP_ISA_V ? 1 : 0; +#else +#pragma message( \ + "warning: RISC-V Vector not supported for this platform") + return 0; +#endif +} diff --git a/vendor/libpng/contrib/tools/pngfix.c b/vendor/libpng/contrib/tools/pngfix.c index 8d5dc46c22..3f0e334f8b 100644 --- a/vendor/libpng/contrib/tools/pngfix.c +++ b/vendor/libpng/contrib/tools/pngfix.c @@ -32,7 +32,7 @@ #endif #if PNG_LIBPNG_VER < 10603 /* 1.6.3 */ -# error "pngfix will not work with libpng prior to 1.6.3" +# error pngfix requires libpng version 1.6.3 or newer #endif #ifdef PNG_SETJMP_SUPPORTED @@ -68,7 +68,7 @@ #endif #ifndef PNG_MAXIMUM_INFLATE_WINDOW -# error "pngfix not supported in this libpng version" +# error pngfix requires libpng with PNG_MAXIMUM_INFLATE_WINDOW supported #endif #if ZLIB_VERNUM >= 0x1240 diff --git a/vendor/libpng/depcomp b/vendor/libpng/depcomp index 1f0aa972c9..9f6725b9e0 100644 --- a/vendor/libpng/depcomp +++ b/vendor/libpng/depcomp @@ -1,9 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2024-06-19.01; # UTC +scriptversion=2025-06-18.21; # UTC -# Copyright (C) 1999-2024 Free Software Foundation, Inc. +# Copyright (C) 1999-2025 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -784,9 +784,9 @@ exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/vendor/libpng/example.c b/vendor/libpng/example.c index dd53d8a871..6af8f6f90d 100644 --- a/vendor/libpng/example.c +++ b/vendor/libpng/example.c @@ -2,7 +2,7 @@ /* example.c - an example of using libpng * - * Maintained 2018-2024 Cosmin Truta + * Maintained 2018-2025 Cosmin Truta * Maintained 1998-2016 Glenn Randers-Pehrson * Maintained 1996-1997 Andreas Dilger * Written 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -179,11 +179,11 @@ int main(int argc, const char **argv) * components. * * You do not have to read directly from a file. You can read from memory or, - * on systems that support it, from a FILE*. This is controlled by - * the particular png_image_read_from_ function you call at the start. - * Likewise, on write, you can write to a FILE* if your system supports it. - * Check the macro PNG_STDIO_SUPPORTED to see if stdio support has been - * included in your libpng build. + * on systems that support , from a FILE object. This is controlled + * by the particular png_image_begin_read_from_ function you call at the start. + * Likewise, on write, you can write to a FILE object if your system supports + * . The macro PNG_STDIO_SUPPORTED indicates if stdio is available + * and accessible from your libpng build. * * If you read 16-bit (PNG_FORMAT_FLAG_LINEAR) data, you may need to write it * in the 8-bit format for display. You do this by setting the convert_to_8bit diff --git a/vendor/libpng/install-sh b/vendor/libpng/install-sh index b1d7a6f67f..1d8d966964 100644 --- a/vendor/libpng/install-sh +++ b/vendor/libpng/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2024-06-19.01; # UTC +scriptversion=2025-06-18.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -533,9 +533,9 @@ do done # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/vendor/libpng/libpng-manual.txt b/vendor/libpng/libpng-manual.txt index 862fe2c5d0..6c07e1022b 100644 --- a/vendor/libpng/libpng-manual.txt +++ b/vendor/libpng/libpng-manual.txt @@ -9,7 +9,7 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng version 1.6.36, December 2018, through 1.6.47 - February 2025 + libpng version 1.6.36, December 2018, through 1.6.50 - July 2025 Updated and distributed by Cosmin Truta Copyright (c) 2018-2025 Cosmin Truta @@ -65,18 +65,22 @@ Libpng was written as a companion to the PNG specification, as a way of reducing the amount of time and effort it takes to support the PNG file format in application programs. -The PNG specification (second edition), November 2003, is available as +The PNG specification (Third Edition), June 2025, is available as +a W3C Recommendation at +. + +The PNG specification (Second Edition), November 2003, is available as a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2004 (E)) at . The W3C and ISO documents have identical technical content. The PNG-1.2 specification is available at -. -It is technically equivalent -to the PNG specification (second edition) but has some additional material. +. +It is technically equivalent to the PNG specification (Second Edition) +but has some additional material. The PNG-1.0 specification is available as RFC 2083 at - and as a + and as a W3C Recommendation at . Some additional chunks are described in the special-purpose public chunks @@ -4089,7 +4093,7 @@ READ APIs is filled in from the PNG header in the file. int png_image_begin_read_from_stdio (png_imagep image, - FILE* file) + FILE *file) The PNG header is read from the stdio FILE object. @@ -4164,7 +4168,7 @@ be written: int convert_to_8_bit, const void *buffer, png_int_32 row_stride, const void *colormap) - Write the image to the given (FILE*). + Write the image to the given FILE object. With all write APIs if image is in one of the linear formats with (png_uint_16) data then setting convert_to_8_bit will cause the output to be diff --git a/vendor/libpng/libpng.3 b/vendor/libpng/libpng.3 index 923b6772eb..8980a252b6 100644 --- a/vendor/libpng/libpng.3 +++ b/vendor/libpng/libpng.3 @@ -1,6 +1,6 @@ -.TH LIBPNG 3 "February 18, 2025" +.TH LIBPNG 3 "July 1, 2025" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.6.47 +libpng \- Portable Network Graphics (PNG) Reference Library 1.6.50 .SH SYNOPSIS \fB#include \fP @@ -223,7 +223,7 @@ libpng \- Portable Network Graphics (PNG) Reference Library 1.6.47 \fBint png_image_begin_read_from_file (png_imagep \fP\fIimage\fP\fB, const char \fI*file_name\fP\fB);\fP -\fBint png_image_begin_read_from_stdio (png_imagep \fP\fIimage\fP\fB, FILE* \fIfile\fP\fB);\fP +\fBint png_image_begin_read_from_stdio (png_imagep \fP\fIimage\fP\fB, FILE *\fIfile\fP\fB);\fP \fBint, png_image_begin_read_from_memory (png_imagep \fP\fIimage\fP\fB, png_const_voidp \fP\fImemory\fP\fB, size_t \fIsize\fP\fB);\fP @@ -528,7 +528,7 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng version 1.6.36, December 2018, through 1.6.47 - February 2025 + libpng version 1.6.36, December 2018, through 1.6.50 - July 2025 Updated and distributed by Cosmin Truta Copyright (c) 2018-2025 Cosmin Truta @@ -584,18 +584,22 @@ Libpng was written as a companion to the PNG specification, as a way of reducing the amount of time and effort it takes to support the PNG file format in application programs. -The PNG specification (second edition), November 2003, is available as +The PNG specification (Third Edition), June 2025, is available as +a W3C Recommendation at +. + +The PNG specification (Second Edition), November 2003, is available as a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2004 (E)) at . The W3C and ISO documents have identical technical content. The PNG-1.2 specification is available at -. -It is technically equivalent -to the PNG specification (second edition) but has some additional material. +. +It is technically equivalent to the PNG specification (Second Edition) +but has some additional material. The PNG-1.0 specification is available as RFC 2083 at - and as a + and as a W3C Recommendation at . Some additional chunks are described in the special-purpose public chunks @@ -4608,7 +4612,7 @@ READ APIs is filled in from the PNG header in the file. int png_image_begin_read_from_stdio (png_imagep image, - FILE* file) + FILE *file) The PNG header is read from the stdio FILE object. @@ -4683,7 +4687,7 @@ be written: int convert_to_8_bit, const void *buffer, png_int_32 row_stride, const void *colormap) - Write the image to the given (FILE*). + Write the image to the given FILE object. With all write APIs if image is in one of the linear formats with (png_uint_16) data then setting convert_to_8_bit will cause the output to be diff --git a/vendor/libpng/libpngpf.3 b/vendor/libpng/libpngpf.3 index 9c4dda2a64..e3788f18c1 100644 --- a/vendor/libpng/libpngpf.3 +++ b/vendor/libpng/libpngpf.3 @@ -1,24 +1,17 @@ -.TH LIBPNGPF 3 "February 18, 2025" +.TH LIBPNGPF 3 "July 1, 2025" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.6.47 -(private functions) +libpng \- Portable Network Graphics (PNG) Reference Library 1.6.50 .SH SYNOPSIS -\fB#include \fI"pngpriv.h" - -\fBAs of libpng version \fP\fI1.5.1\fP\fB, this section is no longer -\fP\fImaintained\fP\fB, now that the private function prototypes are hidden in -\fP\fIpngpriv.h\fP\fB and not accessible to applications. Look in -\fP\fIpngpriv.h\fP\fB for the prototypes and a short description of each -function. +\fB#include "pngpriv.h"\fP .SH DESCRIPTION -The functions previously listed here are used privately by libpng and are not -available for use by applications. They are not "exported" to applications -using shared libraries. +As of libpng version 1.5.1, this manual is no longer maintained. The private +function prototypes, declared in private header files, should not be accessed +by applications. .SH "SEE ALSO" -.BR "png"(5), " libpng"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5) +.BR "libpng"(3) .SH AUTHORS Cosmin Truta, Glenn Randers-Pehrson diff --git a/vendor/libpng/mips/mips_init.c b/vendor/libpng/mips/mips_init.c index 143f0a3714..5f9346f9e3 100644 --- a/vendor/libpng/mips/mips_init.c +++ b/vendor/libpng/mips/mips_init.c @@ -48,7 +48,7 @@ static int png_have_msa(png_structp png_ptr); #include PNG_MIPS_MSA_FILE #else /* PNG_MIPS_MSA_FILE */ -# error "PNG_MIPS_MSA_FILE undefined: no support for run-time MIPS MSA checks" +# error PNG_MIPS_MSA_FILE undefined: no support for run-time MIPS MSA checks #endif /* PNG_MIPS_MSA_FILE */ #endif /* PNG_MIPS_MSA_CHECK_SUPPORTED */ @@ -66,12 +66,12 @@ static int png_have_mmi(); #include PNG_MIPS_MMI_FILE #else /* PNG_MIPS_MMI_FILE */ -# error "PNG_MIPS_MMI_FILE undefined: no support for run-time MIPS MMI checks" +# error PNG_MIPS_MMI_FILE undefined: no support for run-time MIPS MMI checks #endif /* PNG_MIPS_MMI_FILE */ #endif /* PNG_MIPS_MMI_CHECK_SUPPORTED*/ #ifndef PNG_ALIGNED_MEMORY_SUPPORTED -# error "ALIGNED_MEMORY is required; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" +# error ALIGNED_MEMORY is required; please define PNG_ALIGNED_MEMORY_SUPPORTED #endif /* MIPS supports two optimizations: MMI and MSA. The appropriate diff --git a/vendor/libpng/missing b/vendor/libpng/missing index 7e7d78ec52..5e450bab3c 100644 --- a/vendor/libpng/missing +++ b/vendor/libpng/missing @@ -1,11 +1,11 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU and other programs. -scriptversion=2024-06-07.14; # UTC +scriptversion=2025-06-18.21; # UTC # shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells -# Copyright (C) 1996-2024 Free Software Foundation, Inc. +# Copyright (C) 1996-2025 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -228,9 +228,9 @@ give_advice "$1" | sed -e '1s/^/WARNING: /' \ exit $st # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/vendor/libpng/png.5 b/vendor/libpng/png.5 index ee4a2b20db..c230915b48 100644 --- a/vendor/libpng/png.5 +++ b/vendor/libpng/png.5 @@ -1,4 +1,4 @@ -.TH PNG 5 "February 18, 2025" +.TH PNG 5 "July 1, 2025" .SH NAME png \- Portable Network Graphics (PNG) format @@ -20,20 +20,25 @@ matching on heterogeneous platforms. .SH "SEE ALSO" .BR "libpng"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5) .LP -PNG Specification (Third Edition) Candidate Recommendation Draft, January 2025: +PNG Specification (Third Edition), June 2025: .IP .br -https://www.w3.org/TR/2025/CRD-png-3-20250121/ +https://www.w3.org/TR/2025/REC-png-3-20250624/ .LP PNG Specification (Second Edition), November 2003: .IP .br https://www.w3.org/TR/2003/REC-PNG-20031110/ .LP -PNG 1.2 Specification, July 1999: +PNG 1.2 Specification, August 1999: .IP .br -https://png-mng.sourceforge.io/pub/png/spec/1.2/ +https://www.libpng.org/pub/png/spec/1.2/ +.LP +PNG 1.1 Specification, December 1998: +.IP +.br +https://www.libpng.org/pub/png/spec/1.1/ .LP PNG 1.0 Specification, October 1996: .IP @@ -50,15 +55,24 @@ https://www.w3.org/TR/REC-png-961001 .SH AUTHORS This man page: Glenn Randers-Pehrson, Cosmin Truta .LP +Portable Network Graphics (PNG) Specification (Third Edition). +W3C Recommendation 24 June 2025: +Chris Blume et al. +.LP Portable Network Graphics (PNG) Specification (Second Edition) Information technology - Computer graphics and image processing - Portable Network Graphics (PNG): Functional specification. -ISO/IEC 15948:2003 (E) (November 10, 2003): David Duce and others. +ISO/IEC 15948:2003 (E), W3C Recommendation 10 November 2003: +David Duce et al. +.LP +Portable Network Graphics (PNG) Specification Version 1.2 (11 August 1999): +Glenn Randers-Pehrson et al. .LP -Portable Network Graphics (PNG) Specification Version 1.2 (July 8, 1999): -Glenn Randers-Pehrson and others. +Portable Network Graphics (PNG) Specification Version 1.1 (31 December 1998): +Glenn Randers-Pehrson et al. .LP -Portable Network Graphics (PNG) Specification Version 1.0 (October 1, 1996): -Thomas Boutell and others. +Portable Network Graphics (PNG) Specification Version 1.0. +IETF RFC 2083, W3C Recommendation 1 October 1996: +Thomas Boutell et al. .\" end of man page diff --git a/vendor/libpng/png.c b/vendor/libpng/png.c index 6d533ec40b..6e21915c40 100644 --- a/vendor/libpng/png.c +++ b/vendor/libpng/png.c @@ -13,7 +13,7 @@ #include "pngpriv.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_47 Your_png_h_is_not_version_1_6_47; +typedef png_libpng_version_1_6_50 Your_png_h_is_not_version_1_6_50; /* Sanity check the chunks definitions - PNG_KNOWN_CHUNKS from pngpriv.h and the * corresponding macro definitions. This causes a compile time failure if @@ -700,7 +700,7 @@ png_get_io_ptr(png_const_structrp png_ptr) * function of your own because "FILE *" isn't necessarily available. */ void PNGAPI -png_init_io(png_structrp png_ptr, png_FILE_p fp) +png_init_io(png_structrp png_ptr, FILE *fp) { png_debug(1, "in png_init_io"); @@ -815,7 +815,7 @@ png_get_copyright(png_const_structrp png_ptr) return PNG_STRING_COPYRIGHT #else return PNG_STRING_NEWLINE \ - "libpng version 1.6.47" PNG_STRING_NEWLINE \ + "libpng version 1.6.50" PNG_STRING_NEWLINE \ "Copyright (c) 2018-2025 Cosmin Truta" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \ PNG_STRING_NEWLINE \ @@ -1491,7 +1491,7 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) } #endif /* COLORSPACE */ -#ifdef PNG_iCCP_SUPPORTED +#ifdef PNG_READ_iCCP_SUPPORTED /* Error message generation */ static char png_icc_tag_char(png_uint_32 byte) @@ -1567,9 +1567,7 @@ png_icc_profile_error(png_const_structrp png_ptr, png_const_charp name, return 0; } -#endif /* iCCP */ -#ifdef PNG_READ_iCCP_SUPPORTED /* Encoded value of D50 as an ICC XYZNumber. From the ICC 2010 spec the value * is XYZ(0.9642,1.0,0.8249), which scales to: * @@ -3969,7 +3967,7 @@ png_image_free_function(png_voidp argument) # ifdef PNG_STDIO_SUPPORTED if (cp->owned_file != 0) { - FILE *fp = png_voidcast(FILE*, cp->png_ptr->io_ptr); + FILE *fp = png_voidcast(FILE *, cp->png_ptr->io_ptr); cp->owned_file = 0; /* Ignore errors here. */ diff --git a/vendor/libpng/png.h b/vendor/libpng/png.h index 9b069e4ee8..b9985e8168 100644 --- a/vendor/libpng/png.h +++ b/vendor/libpng/png.h @@ -1,6 +1,6 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.47 + * libpng version 1.6.50 * * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson @@ -14,7 +14,7 @@ * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger * libpng versions 0.97, January 1998, through 1.6.35, July 2018: * Glenn Randers-Pehrson - * libpng versions 1.6.36, December 2018, through 1.6.47, February 2025: + * libpng versions 1.6.36, December 2018, through 1.6.50, July 2025: * Cosmin Truta * See also "Contributing Authors", below. */ @@ -238,7 +238,7 @@ * ... * 1.5.30 15 10530 15.so.15.30[.0] * ... - * 1.6.47 16 10647 16.so.16.47[.0] + * 1.6.50 16 10650 16.so.16.50[.0] * * Henceforth the source version will match the shared-library major and * minor numbers; the shared-library major version number will be used for @@ -274,7 +274,7 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.6.47" +#define PNG_LIBPNG_VER_STRING "1.6.50" #define PNG_HEADER_VERSION_STRING " libpng version " PNG_LIBPNG_VER_STRING "\n" /* The versions of shared library builds should stay in sync, going forward */ @@ -285,7 +285,7 @@ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ #define PNG_LIBPNG_VER_MAJOR 1 #define PNG_LIBPNG_VER_MINOR 6 -#define PNG_LIBPNG_VER_RELEASE 47 +#define PNG_LIBPNG_VER_RELEASE 50 /* This should be zero for a public release, or non-zero for a * development version. @@ -316,7 +316,7 @@ * From version 1.0.1 it is: * XXYYZZ, where XX=major, YY=minor, ZZ=release */ -#define PNG_LIBPNG_VER 10647 /* 1.6.47 */ +#define PNG_LIBPNG_VER 10650 /* 1.6.50 */ /* Library configuration: these options cannot be changed after * the library has been built. @@ -426,7 +426,7 @@ extern "C" { /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -typedef char* png_libpng_version_1_6_47; +typedef char* png_libpng_version_1_6_50; /* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. * @@ -1570,7 +1570,7 @@ PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr, #ifdef PNG_STDIO_SUPPORTED /* Initialize the input/output for the PNG file to the default functions. */ -PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, png_FILE_p fp)); +PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, FILE *fp)); #endif /* Replace the (error and abort), and warning functions with user @@ -3088,7 +3088,7 @@ PNG_EXPORT(234, int, png_image_begin_read_from_file, (png_imagep image, */ PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image, - FILE* file)); + FILE *file)); /* The PNG header is read from the stdio FILE object. */ #endif /* STDIO */ @@ -3163,7 +3163,7 @@ PNG_EXPORT(239, int, png_image_write_to_file, (png_imagep image, PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file, int convert_to_8_bit, const void *buffer, png_int_32 row_stride, const void *colormap)); - /* Write the image to the given (FILE*). */ + /* Write the image to the given FILE object. */ #endif /* SIMPLIFIED_WRITE_STDIO */ /* With all write APIs if image is in one of the linear formats with 16-bit @@ -3303,26 +3303,45 @@ PNG_EXPORT(245, int, png_image_write_to_memory, (png_imagep image, void *memory, * selected at run time. */ #ifdef PNG_SET_OPTION_SUPPORTED + +/* HARDWARE: ARM Neon SIMD instructions supported */ #ifdef PNG_ARM_NEON_API_SUPPORTED -# define PNG_ARM_NEON 0 /* HARDWARE: ARM Neon SIMD instructions supported */ +# define PNG_ARM_NEON 0 #endif -#define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */ -#define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */ + +/* SOFTWARE: Force maximum window */ +#define PNG_MAXIMUM_INFLATE_WINDOW 2 + +/* SOFTWARE: Check ICC profile for sRGB */ +#define PNG_SKIP_sRGB_CHECK_PROFILE 4 + +/* HARDWARE: MIPS MSA SIMD instructions supported */ #ifdef PNG_MIPS_MSA_API_SUPPORTED -# define PNG_MIPS_MSA 6 /* HARDWARE: MIPS Msa SIMD instructions supported */ +# define PNG_MIPS_MSA 6 #endif + +/* SOFTWARE: Disable Adler32 check on IDAT */ #ifdef PNG_DISABLE_ADLER32_CHECK_SUPPORTED -# define PNG_IGNORE_ADLER32 8 /* SOFTWARE: disable Adler32 check on IDAT */ +# define PNG_IGNORE_ADLER32 8 #endif + +/* HARDWARE: PowerPC VSX SIMD instructions supported */ #ifdef PNG_POWERPC_VSX_API_SUPPORTED -# define PNG_POWERPC_VSX 10 /* HARDWARE: PowerPC VSX SIMD instructions - * supported */ +# define PNG_POWERPC_VSX 10 #endif + +/* HARDWARE: MIPS MMI SIMD instructions supported */ #ifdef PNG_MIPS_MMI_API_SUPPORTED -# define PNG_MIPS_MMI 12 /* HARDWARE: MIPS MMI SIMD instructions supported */ +# define PNG_MIPS_MMI 12 +#endif + +/* HARDWARE: RISC-V RVV SIMD instructions supported */ +#ifdef PNG_RISCV_RVV_API_SUPPORTED +# define PNG_RISCV_RVV 14 #endif -#define PNG_OPTION_NEXT 14 /* Next option - numbers must be even */ +/* Next option - numbers must be even */ +#define PNG_OPTION_NEXT 16 /* Return values: NOTE: there are four values and 'off' is *not* zero */ #define PNG_OPTION_UNSET 0 /* Unset - defaults to off */ diff --git a/vendor/libpng/pngconf.h b/vendor/libpng/pngconf.h index 42fa973c20..d1081b54dd 100644 --- a/vendor/libpng/pngconf.h +++ b/vendor/libpng/pngconf.h @@ -1,6 +1,6 @@ /* pngconf.h - machine-configurable file for libpng * - * libpng version 1.6.47 + * libpng version 1.6.50 * * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson @@ -219,25 +219,13 @@ /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ # if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) -# error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" +# error PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed # endif -# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ - (defined(__BORLANDC__) && __BORLANDC__ < 0x500) - /* older Borland and MSC - * compilers used '__export' and required this to be after - * the type. - */ -# ifndef PNG_EXPORT_TYPE -# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP -# endif -# define PNG_DLL_EXPORT __export -# else /* newer compiler */ -# define PNG_DLL_EXPORT __declspec(dllexport) -# ifndef PNG_DLL_IMPORT -# define PNG_DLL_IMPORT __declspec(dllimport) -# endif -# endif /* compiler */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif #else /* !Windows */ # if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) @@ -479,7 +467,7 @@ #if CHAR_BIT == 8 && UCHAR_MAX == 255 typedef unsigned char png_byte; #else -# error "libpng requires 8-bit bytes" +# error libpng requires 8-bit bytes #endif #if INT_MIN == -32768 && INT_MAX == 32767 @@ -487,7 +475,7 @@ #elif SHRT_MIN == -32768 && SHRT_MAX == 32767 typedef short png_int_16; #else -# error "libpng requires a signed 16-bit type" +# error libpng requires a signed 16-bit integer type #endif #if UINT_MAX == 65535 @@ -495,7 +483,7 @@ #elif USHRT_MAX == 65535 typedef unsigned short png_uint_16; #else -# error "libpng requires an unsigned 16-bit type" +# error libpng requires an unsigned 16-bit integer type #endif #if INT_MIN < -2147483646 && INT_MAX > 2147483646 @@ -503,7 +491,7 @@ #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 typedef long int png_int_32; #else -# error "libpng requires a signed 32-bit (or more) type" +# error libpng requires a signed 32-bit (or longer) integer type #endif #if UINT_MAX > 4294967294U @@ -511,7 +499,7 @@ #elif ULONG_MAX > 4294967294U typedef unsigned long int png_uint_32; #else -# error "libpng requires an unsigned 32-bit (or more) type" +# error libpng requires an unsigned 32-bit (or longer) integer type #endif /* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t. @@ -592,10 +580,6 @@ typedef const png_fixed_point * png_const_fixed_point_p; typedef size_t * png_size_tp; typedef const size_t * png_const_size_tp; -#ifdef PNG_STDIO_SUPPORTED -typedef FILE * png_FILE_p; -#endif - #ifdef PNG_FLOATING_POINT_SUPPORTED typedef double * png_doublep; typedef const double * png_const_doublep; @@ -617,6 +601,15 @@ typedef double * * png_doublepp; /* Pointers to pointers to pointers; i.e., pointer to array */ typedef char * * * png_charppp; +#ifdef PNG_STDIO_SUPPORTED +/* With PNG_STDIO_SUPPORTED it was possible to use I/O streams that were + * not necessarily stdio FILE streams, to allow building Windows applications + * before Win32 and Windows CE applications before WinCE 3.0, but that kind + * of support has long been discontinued. + */ +typedef FILE * png_FILE_p; /* [Deprecated] */ +#endif + #endif /* PNG_BUILDING_SYMBOL_TABLE */ #endif /* PNGCONF_H */ diff --git a/vendor/libpng/pngdebug.h b/vendor/libpng/pngdebug.h index ab9ea632d9..af1ae9e821 100644 --- a/vendor/libpng/pngdebug.h +++ b/vendor/libpng/pngdebug.h @@ -1,6 +1,6 @@ -/* pngdebug.h - Debugging macros for libpng, also used in pngtest.c +/* pngdebug.h - internal debugging macros for libpng * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2013 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -10,6 +10,10 @@ * and license in png.h */ +#ifndef PNGPRIV_H +# error This file must not be included by applications; please include +#endif + /* Define PNG_DEBUG at compile time for debugging information. Higher * numbers for PNG_DEBUG mean more debugging information. This has * only been added since version 0.95 so it is not implemented throughout diff --git a/vendor/libpng/pngerror.c b/vendor/libpng/pngerror.c index 275b188d04..01a7ef5347 100644 --- a/vendor/libpng/pngerror.c +++ b/vendor/libpng/pngerror.c @@ -1,6 +1,6 @@ /* pngerror.c - stub functions for i/o and memory allocation * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. diff --git a/vendor/libpng/pngget.c b/vendor/libpng/pngget.c index 3623c5c7c3..1ebb1144ff 100644 --- a/vendor/libpng/pngget.c +++ b/vendor/libpng/pngget.c @@ -1,6 +1,6 @@ /* pngget.c - retrieval of values from info struct * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. diff --git a/vendor/libpng/pnginfo.h b/vendor/libpng/pnginfo.h index c2a907bc58..584a42f956 100644 --- a/vendor/libpng/pnginfo.h +++ b/vendor/libpng/pnginfo.h @@ -1,6 +1,6 @@ -/* pnginfo.h - header file for PNG reference library +/* pnginfo.h - internal structures for libpng * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2013,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -10,43 +10,20 @@ * and license in png.h */ - /* png_info is a structure that holds the information in a PNG file so - * that the application can find out the characteristics of the image. - * If you are reading the file, this structure will tell you what is - * in the PNG file. If you are writing the file, fill in the information - * you want to put into the PNG file, using png_set_*() functions, then - * call png_write_info(). - * - * The names chosen should be very close to the PNG specification, so - * consult that document for information about the meaning of each field. - * - * With libpng < 0.95, it was only possible to directly set and read the - * the values in the png_info_struct, which meant that the contents and - * order of the values had to remain fixed. With libpng 0.95 and later, - * however, there are now functions that abstract the contents of - * png_info_struct from the application, so this makes it easier to use - * libpng with dynamic libraries, and even makes it possible to use - * libraries that don't have all of the libpng ancillary chunk-handing - * functionality. In libpng-1.5.0 this was moved into a separate private - * file that is not visible to applications. +#ifndef PNGPRIV_H +# error This file must not be included by applications; please include +#endif + +/* INTERNAL, PRIVATE definition of a PNG. * - * The following members may have allocated storage attached that should be - * cleaned up before the structure is discarded: palette, trans, text, - * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile, - * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these - * are automatically freed when the info structure is deallocated, if they were - * allocated internally by libpng. This behavior can be changed by means - * of the png_data_freer() function. + * png_info is a modifiable description of a PNG datastream. The fields inside + * this structure are accessed through png_get_() functions and modified + * using png_set_() functions. * - * More allocation details: all the chunk-reading functions that - * change these members go through the corresponding png_set_* - * functions. A function to clear these members is available: see - * png_free_data(). The png_set_* functions do not depend on being - * able to point info structure members to any of the storage they are - * passed (they make their own copies), EXCEPT that the png_set_text - * functions use the same storage passed to them in the text_ptr or - * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns - * functions do not make their own copies. + * Some functions in libpng do directly access members of png_info. However, + * this should be avoided. png_struct objects contain members which hold + * caches, sometimes optimised, of the values from png_info objects, and + * png_info is not passed to the functions which read and write image data. */ #ifndef PNGINFO_H #define PNGINFO_H diff --git a/vendor/libpng/pnglibconf.h b/vendor/libpng/pnglibconf.h deleted file mode 100644 index 748220bfc1..0000000000 --- a/vendor/libpng/pnglibconf.h +++ /dev/null @@ -1,233 +0,0 @@ -/* pnglibconf.h - library build configuration */ - -/* libpng version 1.6.47 */ - -/* Copyright (c) 2018-2025 Cosmin Truta */ -/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ - -/* This code is released under the libpng license. */ -/* For conditions of distribution and use, see the disclaimer */ -/* and license in png.h */ - -/* pnglibconf.h */ -/* Machine generated file: DO NOT EDIT */ -/* Derived from: scripts/pnglibconf.dfa */ -#ifndef PNGLCONF_H -#define PNGLCONF_H -/* options */ -#define PNG_16BIT_SUPPORTED -#define PNG_ALIGNED_MEMORY_SUPPORTED -/*#undef PNG_ARM_NEON_API_SUPPORTED*/ -/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ -#define PNG_BENIGN_ERRORS_SUPPORTED -#define PNG_BENIGN_READ_ERRORS_SUPPORTED -/*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ -#define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED -#define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_COLORSPACE_SUPPORTED -#define PNG_CONSOLE_IO_SUPPORTED -#define PNG_CONVERT_tIME_SUPPORTED -/*#undef PNG_DISABLE_ADLER32_CHECK_SUPPORTED*/ -#define PNG_EASY_ACCESS_SUPPORTED -/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ -#define PNG_ERROR_TEXT_SUPPORTED -#define PNG_FIXED_POINT_SUPPORTED -#define PNG_FLOATING_ARITHMETIC_SUPPORTED -#define PNG_FLOATING_POINT_SUPPORTED -#define PNG_FORMAT_AFIRST_SUPPORTED -#define PNG_FORMAT_BGR_SUPPORTED -#define PNG_GAMMA_SUPPORTED -#define PNG_GET_PALETTE_MAX_SUPPORTED -#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED -#define PNG_INCH_CONVERSIONS_SUPPORTED -#define PNG_INFO_IMAGE_SUPPORTED -#define PNG_IO_STATE_SUPPORTED -/*#undef PNG_MIPS_MMI_API_SUPPORTED*/ -/*#undef PNG_MIPS_MMI_CHECK_SUPPORTED*/ -/*#undef PNG_MIPS_MSA_API_SUPPORTED*/ -/*#undef PNG_MIPS_MSA_CHECK_SUPPORTED*/ -#define PNG_MNG_FEATURES_SUPPORTED -#define PNG_POINTER_INDEXING_SUPPORTED -/*#undef PNG_POWERPC_VSX_API_SUPPORTED*/ -/*#undef PNG_POWERPC_VSX_CHECK_SUPPORTED*/ -#define PNG_PROGRESSIVE_READ_SUPPORTED -#define PNG_READ_16BIT_SUPPORTED -#define PNG_READ_ALPHA_MODE_SUPPORTED -#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_READ_BACKGROUND_SUPPORTED -#define PNG_READ_BGR_SUPPORTED -#define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_READ_COMPOSITE_NODIV_SUPPORTED -#define PNG_READ_COMPRESSED_TEXT_SUPPORTED -#define PNG_READ_EXPAND_16_SUPPORTED -#define PNG_READ_EXPAND_SUPPORTED -#define PNG_READ_FILLER_SUPPORTED -#define PNG_READ_GAMMA_SUPPORTED -#define PNG_READ_GET_PALETTE_MAX_SUPPORTED -#define PNG_READ_GRAY_TO_RGB_SUPPORTED -#define PNG_READ_INTERLACING_SUPPORTED -#define PNG_READ_INT_FUNCTIONS_SUPPORTED -#define PNG_READ_INVERT_ALPHA_SUPPORTED -#define PNG_READ_INVERT_SUPPORTED -#define PNG_READ_OPT_PLTE_SUPPORTED -#define PNG_READ_PACKSWAP_SUPPORTED -#define PNG_READ_PACK_SUPPORTED -#define PNG_READ_QUANTIZE_SUPPORTED -#define PNG_READ_RGB_TO_GRAY_SUPPORTED -#define PNG_READ_SCALE_16_TO_8_SUPPORTED -#define PNG_READ_SHIFT_SUPPORTED -#define PNG_READ_STRIP_16_TO_8_SUPPORTED -#define PNG_READ_STRIP_ALPHA_SUPPORTED -#define PNG_READ_SUPPORTED -#define PNG_READ_SWAP_ALPHA_SUPPORTED -#define PNG_READ_SWAP_SUPPORTED -#define PNG_READ_TEXT_SUPPORTED -#define PNG_READ_TRANSFORMS_SUPPORTED -#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_READ_USER_CHUNKS_SUPPORTED -#define PNG_READ_USER_TRANSFORM_SUPPORTED -#define PNG_READ_bKGD_SUPPORTED -#define PNG_READ_cHRM_SUPPORTED -#define PNG_READ_cICP_SUPPORTED -#define PNG_READ_cLLI_SUPPORTED -#define PNG_READ_eXIf_SUPPORTED -#define PNG_READ_gAMA_SUPPORTED -#define PNG_READ_hIST_SUPPORTED -#define PNG_READ_iCCP_SUPPORTED -#define PNG_READ_iTXt_SUPPORTED -#define PNG_READ_mDCV_SUPPORTED -#define PNG_READ_oFFs_SUPPORTED -#define PNG_READ_pCAL_SUPPORTED -#define PNG_READ_pHYs_SUPPORTED -#define PNG_READ_sBIT_SUPPORTED -#define PNG_READ_sCAL_SUPPORTED -#define PNG_READ_sPLT_SUPPORTED -#define PNG_READ_sRGB_SUPPORTED -#define PNG_READ_tEXt_SUPPORTED -#define PNG_READ_tIME_SUPPORTED -#define PNG_READ_tRNS_SUPPORTED -#define PNG_READ_zTXt_SUPPORTED -#define PNG_SAVE_INT_32_SUPPORTED -#define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_SEQUENTIAL_READ_SUPPORTED -#define PNG_SETJMP_SUPPORTED -#define PNG_SET_OPTION_SUPPORTED -#define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_SET_USER_LIMITS_SUPPORTED -#define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED -#define PNG_SIMPLIFIED_READ_BGR_SUPPORTED -#define PNG_SIMPLIFIED_READ_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_SUPPORTED -#define PNG_STDIO_SUPPORTED -#define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_TEXT_SUPPORTED -#define PNG_TIME_RFC1123_SUPPORTED -#define PNG_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_USER_CHUNKS_SUPPORTED -#define PNG_USER_LIMITS_SUPPORTED -#define PNG_USER_MEM_SUPPORTED -#define PNG_USER_TRANSFORM_INFO_SUPPORTED -#define PNG_USER_TRANSFORM_PTR_SUPPORTED -#define PNG_WARNINGS_SUPPORTED -#define PNG_WRITE_16BIT_SUPPORTED -#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_WRITE_BGR_SUPPORTED -#define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED -#define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED -#define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED -#define PNG_WRITE_FILLER_SUPPORTED -#define PNG_WRITE_FILTER_SUPPORTED -#define PNG_WRITE_FLUSH_SUPPORTED -#define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED -#define PNG_WRITE_INTERLACING_SUPPORTED -#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED -#define PNG_WRITE_INVERT_ALPHA_SUPPORTED -#define PNG_WRITE_INVERT_SUPPORTED -#define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED -#define PNG_WRITE_PACKSWAP_SUPPORTED -#define PNG_WRITE_PACK_SUPPORTED -#define PNG_WRITE_SHIFT_SUPPORTED -#define PNG_WRITE_SUPPORTED -#define PNG_WRITE_SWAP_ALPHA_SUPPORTED -#define PNG_WRITE_SWAP_SUPPORTED -#define PNG_WRITE_TEXT_SUPPORTED -#define PNG_WRITE_TRANSFORMS_SUPPORTED -#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_WRITE_USER_TRANSFORM_SUPPORTED -#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED -#define PNG_WRITE_bKGD_SUPPORTED -#define PNG_WRITE_cHRM_SUPPORTED -#define PNG_WRITE_cICP_SUPPORTED -#define PNG_WRITE_cLLI_SUPPORTED -#define PNG_WRITE_eXIf_SUPPORTED -#define PNG_WRITE_gAMA_SUPPORTED -#define PNG_WRITE_hIST_SUPPORTED -#define PNG_WRITE_iCCP_SUPPORTED -#define PNG_WRITE_iTXt_SUPPORTED -#define PNG_WRITE_mDCV_SUPPORTED -#define PNG_WRITE_oFFs_SUPPORTED -#define PNG_WRITE_pCAL_SUPPORTED -#define PNG_WRITE_pHYs_SUPPORTED -#define PNG_WRITE_sBIT_SUPPORTED -#define PNG_WRITE_sCAL_SUPPORTED -#define PNG_WRITE_sPLT_SUPPORTED -#define PNG_WRITE_sRGB_SUPPORTED -#define PNG_WRITE_tEXt_SUPPORTED -#define PNG_WRITE_tIME_SUPPORTED -#define PNG_WRITE_tRNS_SUPPORTED -#define PNG_WRITE_zTXt_SUPPORTED -#define PNG_bKGD_SUPPORTED -#define PNG_cHRM_SUPPORTED -#define PNG_cICP_SUPPORTED -#define PNG_cLLI_SUPPORTED -#define PNG_eXIf_SUPPORTED -#define PNG_gAMA_SUPPORTED -#define PNG_hIST_SUPPORTED -#define PNG_iCCP_SUPPORTED -#define PNG_iTXt_SUPPORTED -#define PNG_mDCV_SUPPORTED -#define PNG_oFFs_SUPPORTED -#define PNG_pCAL_SUPPORTED -#define PNG_pHYs_SUPPORTED -#define PNG_sBIT_SUPPORTED -#define PNG_sCAL_SUPPORTED -#define PNG_sPLT_SUPPORTED -#define PNG_sRGB_SUPPORTED -#define PNG_tEXt_SUPPORTED -#define PNG_tIME_SUPPORTED -#define PNG_tRNS_SUPPORTED -#define PNG_zTXt_SUPPORTED -/* end of options */ -/* settings */ -#define PNG_API_RULE 0 -#define PNG_DEFAULT_READ_MACROS 1 -#define PNG_GAMMA_THRESHOLD_FIXED 5000 -#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE -#define PNG_INFLATE_BUF_SIZE 1024 -#define PNG_LINKAGE_API extern -#define PNG_LINKAGE_CALLBACK extern -#define PNG_LINKAGE_DATA extern -#define PNG_LINKAGE_FUNCTION extern -#define PNG_MAX_GAMMA_8 11 -#define PNG_QUANTIZE_BLUE_BITS 5 -#define PNG_QUANTIZE_GREEN_BITS 5 -#define PNG_QUANTIZE_RED_BITS 5 -#define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) -#define PNG_TEXT_Z_DEFAULT_STRATEGY 0 -#define PNG_USER_CHUNK_CACHE_MAX 1000 -#define PNG_USER_CHUNK_MALLOC_MAX 8000000 -#define PNG_USER_HEIGHT_MAX 1000000 -#define PNG_USER_WIDTH_MAX 1000000 -#define PNG_ZBUF_SIZE 8192 -#define PNG_ZLIB_VERNUM 0 /* unknown */ -#define PNG_Z_DEFAULT_COMPRESSION (-1) -#define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 -#define PNG_Z_DEFAULT_STRATEGY 1 -#define PNG_sCAL_PRECISION 5 -#define PNG_sRGB_PROFILE_CHECKS 2 -/* end of settings */ -#endif /* PNGLCONF_H */ diff --git a/vendor/libpng/pngmem.c b/vendor/libpng/pngmem.c index 90c13b1068..71e61c99f7 100644 --- a/vendor/libpng/pngmem.c +++ b/vendor/libpng/pngmem.c @@ -1,6 +1,6 @@ /* pngmem.c - stub functions for memory allocation * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2014,2016 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. diff --git a/vendor/libpng/pngpread.c b/vendor/libpng/pngpread.c index 60d810693b..37aa432aec 100644 --- a/vendor/libpng/pngpread.c +++ b/vendor/libpng/pngpread.c @@ -1,6 +1,6 @@ /* pngpread.c - read a png file in push mode * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -229,6 +229,14 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) png_benign_error(png_ptr, "Too many IDATs found"); } + else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) + { + /* These flags must be set consistently for all non-IDAT chunks, + * including the unknown chunks. + */ + png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT | PNG_AFTER_IDAT; + } + if (chunk_name == png_IHDR) { if (png_ptr->push_length != 13) diff --git a/vendor/libpng/pngpriv.h b/vendor/libpng/pngpriv.h index d514dff5c1..e3054b90aa 100644 --- a/vendor/libpng/pngpriv.h +++ b/vendor/libpng/pngpriv.h @@ -1,6 +1,6 @@ /* pngpriv.h - private declarations for use inside libpng * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -19,8 +19,20 @@ * they should be well aware of the issues that may arise from doing so. */ + +/* pngpriv.h must be included first in each translation unit inside libpng. + * On the other hand, it must not be included at all, directly or indirectly, + * by any application code that uses the libpng API. + */ #ifndef PNGPRIV_H -#define PNGPRIV_H +# define PNGPRIV_H +#else +# error Duplicate inclusion of pngpriv.h; please check the libpng source files +#endif + +#if defined(PNG_H) || defined(PNGCONF_H) || defined(PNGLCONF_H) +# error This file must not be included by applications; please include +#endif /* Feature Test Macros. The following are defined here to ensure that correctly * implemented libraries reveal the APIs libpng needs to build and hide those @@ -57,7 +69,6 @@ */ #if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H) # include - /* Pick up the definition of 'restrict' from config.h if it was read: */ # define PNG_RESTRICT restrict #endif @@ -67,9 +78,7 @@ * are not internal definitions may be required. This is handled below just * before png.h is included, but load the configuration now if it is available. */ -#ifndef PNGLCONF_H -# include "pnglibconf.h" -#endif +#include "pnglibconf.h" /* Local renames may change non-exported API functions from png.h */ #if defined(PNG_PREFIX) && !defined(PNGPREFIX_H) @@ -134,6 +143,20 @@ # endif #endif +#ifndef PNG_RISCV_RVV_OPT + /* RISCV_RVV optimizations are being controlled by the compiler settings, + * typically the target compiler will define __riscv but the rvv extension + * availability has to be explicitly stated. This is why if no + * PNG_RISCV_RVV_OPT was defined then a runtime check will be executed. + * + * To enable RISCV_RVV optimizations unconditionally, and compile the + * associated code, pass --enable-riscv-rvv=yes or --enable-riscv-rvv=on + * to configure or put -DPNG_RISCV_RVV_OPT=2 in CPPFLAGS. + */ + +# define PNG_RISCV_RVV_OPT 0 +#endif + #if PNG_ARM_NEON_OPT > 0 /* NEON optimizations are to be at least considered by libpng, so enable the * callbacks to do this. @@ -279,6 +302,16 @@ # define PNG_LOONGARCH_LSX_IMPLEMENTATION 0 #endif +#if PNG_RISCV_RVV_OPT > 0 +# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_rvv +# ifndef PNG_RISCV_RVV_IMPLEMENTATION + /* Use the intrinsics code by default. */ +# define PNG_RISCV_RVV_IMPLEMENTATION 1 +# endif +#else +# define PNG_RISCV_RVV_IMPLEMENTATION 0 +#endif + /* Is this a build of a DLL where compilation of the object modules requires * different preprocessor settings to those required for a simple library? If * so PNG_BUILD_DLL must be set. @@ -991,17 +1024,15 @@ * must match that used in the build, or we must be using pnglibconf.h.prebuilt: */ #if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM -# error ZLIB_VERNUM != PNG_ZLIB_VERNUM \ - "-I (include path) error: see the notes in pngpriv.h" - /* This means that when pnglibconf.h was built the copy of zlib.h that it - * used is not the same as the one being used here. Because the build of - * libpng makes decisions to use inflateInit2 and inflateReset2 based on the - * zlib version number and because this affects handling of certain broken - * PNG files the -I directives must match. +# error The include path of is incorrect + /* When pnglibconf.h was built, the copy of zlib.h that it used was not the + * same as the one being used here. Considering how libpng makes decisions + * to use the zlib API based on the zlib version number, the -I options must + * match. * - * The most likely explanation is that you passed a -I in CFLAGS. This will - * not work; all the preprocessor directives and in particular all the -I - * directives must be in CPPFLAGS. + * A possible cause of this mismatch is that you passed an -I option in + * CFLAGS, which is unlikely to work. All the preprocessor options, and all + * the -I options in particular, should be in CPPFLAGS. */ #endif @@ -1515,6 +1546,23 @@ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_lsx,(png_row_infop row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); #endif +#if PNG_RISCV_RVV_OPT > 0 +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_rvv,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_rvv,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_rvv,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_rvv,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_rvv,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_rvv,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_rvv,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +#endif + /* Choose the best filter to use and filter the row data */ PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr, png_row_infop row_info),PNG_EMPTY); @@ -2127,6 +2175,11 @@ PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_lsx, (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); #endif +# if PNG_RISCV_RVV_OPT > 0 +PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_rvv, + (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); +#endif + PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr, png_const_charp key, png_bytep new_key), PNG_EMPTY); @@ -2162,4 +2215,3 @@ PNG_INTERNAL_FUNCTION(int, #endif #endif /* PNG_VERSION_INFO_ONLY */ -#endif /* PNGPRIV_H */ diff --git a/vendor/libpng/pngread.c b/vendor/libpng/pngread.c index 0fd364827e..212afb7d21 100644 --- a/vendor/libpng/pngread.c +++ b/vendor/libpng/pngread.c @@ -702,7 +702,12 @@ png_read_end(png_structrp png_ptr, png_inforp info_ptr) png_uint_32 chunk_name = png_ptr->chunk_name; if (chunk_name != png_IDAT) - png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; + { + /* These flags must be set consistently for all non-IDAT chunks, + * including the unknown chunks. + */ + png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT | PNG_AFTER_IDAT; + } if (chunk_name == png_IEND) png_handle_chunk(png_ptr, info_ptr, length); @@ -809,7 +814,8 @@ png_read_destroy(png_structrp png_ptr) #endif #if defined(PNG_READ_EXPAND_SUPPORTED) && \ - defined(PNG_ARM_NEON_IMPLEMENTATION) + (defined(PNG_ARM_NEON_IMPLEMENTATION) || \ + defined(PNG_RISCV_RVV_IMPLEMENTATION)) png_free(png_ptr, png_ptr->riffled_palette); png_ptr->riffled_palette = NULL; #endif @@ -1328,7 +1334,7 @@ png_image_read_header(png_voidp argument) #ifdef PNG_STDIO_SUPPORTED int PNGAPI -png_image_begin_read_from_stdio(png_imagep image, FILE* file) +png_image_begin_read_from_stdio(png_imagep image, FILE *file) { if (image != NULL && image->version == PNG_IMAGE_VERSION) { diff --git a/vendor/libpng/pngrio.c b/vendor/libpng/pngrio.c index 3b137f275f..b4a216161b 100644 --- a/vendor/libpng/pngrio.c +++ b/vendor/libpng/pngrio.c @@ -1,6 +1,6 @@ /* pngrio.c - functions for data input * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -56,7 +56,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, size_t length) /* fread() returns 0 on error, so it is OK to store this in a size_t * instead of an int, which is what fread() actually returns. */ - check = fread(data, 1, length, png_voidcast(png_FILE_p, png_ptr->io_ptr)); + check = fread(data, 1, length, png_voidcast(FILE *, png_ptr->io_ptr)); if (check != length) png_error(png_ptr, "Read Error"); diff --git a/vendor/libpng/pngrtran.c b/vendor/libpng/pngrtran.c index a6ce30a523..1809db7047 100644 --- a/vendor/libpng/pngrtran.c +++ b/vendor/libpng/pngrtran.c @@ -1,6 +1,6 @@ /* pngrtran.c - transforms the data in a row for PNG readers * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -28,6 +28,12 @@ # endif #endif +#ifdef PNG_RISCV_RVV_IMPLEMENTATION +# if PNG_RISCV_RVV_IMPLEMENTATION == 1 +# define PNG_RISCV_RVV_INTRINSICS_AVAILABLE +# endif +#endif + #ifdef PNG_READ_SUPPORTED /* Set the action on getting a CRC error for an ancillary or critical chunk. */ diff --git a/vendor/libpng/pngrutil.c b/vendor/libpng/pngrutil.c index d0f3ed35d2..e7c7bbe48e 100644 --- a/vendor/libpng/pngrutil.c +++ b/vendor/libpng/pngrutil.c @@ -1,6 +1,6 @@ /* pngrutil.c - utilities to read a PNG file * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -2412,10 +2412,6 @@ png_handle_tEXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) } #endif - /* TODO: this doesn't work and shouldn't be necessary. */ - if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - png_ptr->mode |= PNG_AFTER_IDAT; - buffer = png_read_buffer(png_ptr, length+1); if (buffer == NULL) @@ -2486,10 +2482,6 @@ png_handle_zTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) } #endif - /* TODO: should not be necessary. */ - if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - png_ptr->mode |= PNG_AFTER_IDAT; - /* Note, "length" is sufficient here; we won't be adding * a null terminator later. The limit check in png_handle_chunk should be * sufficient. @@ -2606,10 +2598,6 @@ png_handle_iTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) } #endif - /* TODO: should not be necessary. */ - if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - png_ptr->mode |= PNG_AFTER_IDAT; - buffer = png_read_buffer(png_ptr, length+1); if (buffer == NULL) diff --git a/vendor/libpng/pngset.c b/vendor/libpng/pngset.c index d7f3393c43..3e63c2724e 100644 --- a/vendor/libpng/pngset.c +++ b/vendor/libpng/pngset.c @@ -300,17 +300,14 @@ png_set_mDCV(png_const_structrp png_ptr, png_inforp info_ptr, double maxDL, double minDL) { png_set_mDCV_fixed(png_ptr, info_ptr, - /* The ITU approach is to scale by 50,000, not 100,000 so just divide - * the input values by 2 and use png_fixed: - */ - png_fixed(png_ptr, white_x / 2, "png_set_mDCV(white(x))"), - png_fixed(png_ptr, white_y / 2, "png_set_mDCV(white(y))"), - png_fixed(png_ptr, red_x / 2, "png_set_mDCV(red(x))"), - png_fixed(png_ptr, red_y / 2, "png_set_mDCV(red(y))"), - png_fixed(png_ptr, green_x / 2, "png_set_mDCV(green(x))"), - png_fixed(png_ptr, green_y / 2, "png_set_mDCV(green(y))"), - png_fixed(png_ptr, blue_x / 2, "png_set_mDCV(blue(x))"), - png_fixed(png_ptr, blue_y / 2, "png_set_mDCV(blue(y))"), + png_fixed(png_ptr, white_x, "png_set_mDCV(white(x))"), + png_fixed(png_ptr, white_y, "png_set_mDCV(white(y))"), + png_fixed(png_ptr, red_x, "png_set_mDCV(red(x))"), + png_fixed(png_ptr, red_y, "png_set_mDCV(red(y))"), + png_fixed(png_ptr, green_x, "png_set_mDCV(green(x))"), + png_fixed(png_ptr, green_y, "png_set_mDCV(green(y))"), + png_fixed(png_ptr, blue_x, "png_set_mDCV(blue(x))"), + png_fixed(png_ptr, blue_y, "png_set_mDCV(blue(y))"), png_fixed_ITU(png_ptr, maxDL, "png_set_mDCV(maxDL)"), png_fixed_ITU(png_ptr, minDL, "png_set_mDCV(minDL)")); } diff --git a/vendor/libpng/pngstruct.h b/vendor/libpng/pngstruct.h index 324424495e..084422bc1e 100644 --- a/vendor/libpng/pngstruct.h +++ b/vendor/libpng/pngstruct.h @@ -1,6 +1,6 @@ -/* pngstruct.h - header file for PNG reference library +/* pngstruct.h - internal structures for libpng * - * Copyright (c) 2018-2022 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -10,11 +10,9 @@ * and license in png.h */ -/* The structure that holds the information to read and write PNG files. - * The only people who need to care about what is inside of this are the - * people who will be modifying the library for their own special needs. - * It should NOT be accessed directly by an application. - */ +#ifndef PNGPRIV_H +# error This file must not be included by applications; please include +#endif #ifndef PNGSTRUCT_H #define PNGSTRUCT_H @@ -377,7 +375,8 @@ struct png_struct_def /* New member added in libpng-1.6.36 */ #if defined(PNG_READ_EXPAND_SUPPORTED) && \ - defined(PNG_ARM_NEON_IMPLEMENTATION) + (defined(PNG_ARM_NEON_IMPLEMENTATION) || \ + defined(PNG_RISCV_RVV_IMPLEMENTATION)) png_bytep riffled_palette; /* buffer for accelerated palette expansion */ #endif diff --git a/vendor/libpng/pngtest.c b/vendor/libpng/pngtest.c index 1975b4b688..0c8e9fa40e 100644 --- a/vendor/libpng/pngtest.c +++ b/vendor/libpng/pngtest.c @@ -50,7 +50,7 @@ #define STDERR stdout /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_47 Your_png_h_is_not_version_1_6_47; +typedef png_libpng_version_1_6_50 Your_png_h_is_not_version_1_6_50; /* Ensure that all version numbers in png.h are consistent with one another. */ #if (PNG_LIBPNG_VER != PNG_LIBPNG_VER_MAJOR * 10000 + \ @@ -60,7 +60,7 @@ typedef png_libpng_version_1_6_47 Your_png_h_is_not_version_1_6_47; PNG_LIBPNG_VER_MINOR) || \ (PNG_LIBPNG_VER_SHAREDLIB != PNG_LIBPNG_VER_SONUM) || \ (PNG_LIBPNG_VER_SHAREDLIB != PNG_LIBPNG_VER_DLLNUM) -# error "Inconsistent version numbers in png.h" +# error Inconsistent version numbers in "png.h" #endif /* In version 1.6.1, we added support for the configure test harness, which @@ -103,10 +103,6 @@ typedef png_libpng_version_1_6_47 Your_png_h_is_not_version_1_6_47; # define PNG_ZBUF_SIZE 8192 #endif -#ifndef PNG_STDIO_SUPPORTED -typedef FILE * png_FILE_p; -#endif - #ifndef PNG_DEBUG # define PNG_DEBUG 0 #endif @@ -120,7 +116,7 @@ typedef FILE * png_FILE_p; # define pngtest_debug1(m, p1) ((void)0) # define pngtest_debug2(m, p1, p2) ((void)0) #else /* PNG_DEBUG < 0 */ -# error "Bad PNG_DEBUG value" +# error Bad PNG_DEBUG value #endif /* Turn on CPU timing @@ -403,7 +399,7 @@ pngtest_read_data(png_structp png_ptr, png_bytep data, size_t length) */ io_ptr = png_get_io_ptr(png_ptr); if (io_ptr != NULL) - check = fread(data, 1, length, (png_FILE_p)io_ptr); + check = fread(data, 1, length, (FILE *)io_ptr); if (check != length) png_error(png_ptr, "Read Error"); @@ -437,7 +433,7 @@ pngtest_write_data(png_structp png_ptr, png_bytep data, size_t length) if (png_ptr == NULL) png_error(png_ptr, "pngtest_write_data: bad png_ptr"); - check = fwrite(data, 1, length, (png_FILE_p)png_get_io_ptr(png_ptr)); + check = fwrite(data, 1, length, (FILE *)png_get_io_ptr(png_ptr)); if (check != length) png_error(png_ptr, "Write Error"); @@ -858,8 +854,8 @@ pngtest_check_text_support(png_structp png_ptr, png_textp text_ptr, static int test_one_file(const char *inname, const char *outname) { - static png_FILE_p fpin; - static png_FILE_p fpout; /* "static" prevents setjmp corruption */ + static FILE *fpin; + static FILE *fpout; /* "static" prevents setjmp corruption */ pngtest_error_parameters error_parameters; png_structp read_ptr; png_infop read_info_ptr, end_info_ptr; diff --git a/vendor/libpng/pngwio.c b/vendor/libpng/pngwio.c index 38c9c006cb..96a3187ff0 100644 --- a/vendor/libpng/pngwio.c +++ b/vendor/libpng/pngwio.c @@ -1,6 +1,6 @@ /* pngwio.c - functions for data output * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2014,2016,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -54,7 +54,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, size_t length) if (png_ptr == NULL) return; - check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr)); + check = fwrite(data, 1, length, (FILE *)png_ptr->io_ptr); if (check != length) png_error(png_ptr, "Write Error"); @@ -77,12 +77,12 @@ png_flush(png_structrp png_ptr) void PNGCBAPI png_default_flush(png_structp png_ptr) { - png_FILE_p io_ptr; + FILE *io_ptr; if (png_ptr == NULL) return; - io_ptr = png_voidcast(png_FILE_p, (png_ptr->io_ptr)); + io_ptr = png_voidcast(FILE *, png_ptr->io_ptr); fflush(io_ptr); } # endif diff --git a/vendor/libpng/pngwrite.c b/vendor/libpng/pngwrite.c index b7aeff4ce4..35a5d17b60 100644 --- a/vendor/libpng/pngwrite.c +++ b/vendor/libpng/pngwrite.c @@ -2333,7 +2333,7 @@ int PNGAPI png_image_write_to_stdio(png_imagep image, FILE *file, int convert_to_8bit, const void *buffer, png_int_32 row_stride, const void *colormap) { - /* Write the image to the given (FILE*). */ + /* Write the image to the given FILE object. */ if (image != NULL && image->version == PNG_IMAGE_VERSION) { if (file != NULL && buffer != NULL) diff --git a/vendor/libpng/pngwutil.c b/vendor/libpng/pngwutil.c index be706afe64..863ffe8c2f 100644 --- a/vendor/libpng/pngwutil.c +++ b/vendor/libpng/pngwutil.c @@ -1,6 +1,6 @@ /* pngwutil.c - utilities to write a PNG file * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. diff --git a/vendor/libpng/powerpc/filter_vsx_intrinsics.c b/vendor/libpng/powerpc/filter_vsx_intrinsics.c index 01cf8800dc..5acc17c949 100644 --- a/vendor/libpng/powerpc/filter_vsx_intrinsics.c +++ b/vendor/libpng/powerpc/filter_vsx_intrinsics.c @@ -23,7 +23,7 @@ #if PNG_POWERPC_VSX_OPT > 0 #ifndef __VSX__ -# error "This code requires VSX support (POWER7 and later). Please provide -mvsx compiler flag." +# error This code requires VSX support (POWER7 and later); please compile with -mvsx #endif #define vec_ld_unaligned(vec,data) vec = vec_vsx_ld(0,data) diff --git a/vendor/libpng/powerpc/powerpc_init.c b/vendor/libpng/powerpc/powerpc_init.c index 9027480098..70782eda1b 100644 --- a/vendor/libpng/powerpc/powerpc_init.c +++ b/vendor/libpng/powerpc/powerpc_init.c @@ -46,7 +46,7 @@ static int png_have_vsx(png_structp png_ptr); #include PNG_POWERPC_VSX_FILE #else /* PNG_POWERPC_VSX_FILE */ -# error "PNG_POWERPC_VSX_FILE undefined: no support for run-time POWERPC VSX checks" +# error PNG_POWERPC_VSX_FILE undefined: no support for run-time POWERPC VSX checks #endif /* PNG_POWERPC_VSX_FILE */ #endif /* PNG_POWERPC_VSX_CHECK_SUPPORTED */ diff --git a/vendor/libpng/premake5.lua b/vendor/libpng/premake5.lua index cde56cac62..380c74dd90 100644 --- a/vendor/libpng/premake5.lua +++ b/vendor/libpng/premake5.lua @@ -1,29 +1,24 @@ project "libpng" - language "C++" kind "StaticLib" - targetname "libpng" + language "C" + architecture "x86" + systemversion "latest" - includedirs { "../zlib" } - defines { - "NDEBUG", - "PNG_SETJMP_NOT_SUPPORTED", - "WIN32_LEAN_AND_MEAN" - } - - vpaths { - ["Headers/*"] = "**.h", - ["Sources/*"] = "**.c", - ["*"] = "premake5.lua" - } + targetdir "bin" + objdir "obj" files { - "premake5.lua", - "*.h", - "*.c" + "*.c", + "*.h" } - filter "architecture:not x86" - flags { "ExcludeFromBuild" } + includedirs { + "../zlib" + } - filter "system:not windows" - flags { "ExcludeFromBuild" } + defines { + "_CRT_SECURE_NO_WARNINGS", + "WIN32_LEAN_AND_MEAN", + "PNG_NO_MMX_CODE", + "PNG_SETJMP_NOT_SUPPORTED" + } diff --git a/vendor/libpng/projects/visualc71/libpng.vcproj b/vendor/libpng/projects/visualc71/libpng.vcproj index 608ec4e6b4..3bdebb3597 100644 --- a/vendor/libpng/projects/visualc71/libpng.vcproj +++ b/vendor/libpng/projects/visualc71/libpng.vcproj @@ -66,7 +66,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..;..\..\..\zlib" - PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;PNG_BUILD_DLL;ZLIB_DLL;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_BUILD_DLL;ZLIB_DLL;_CRT_SECURE_NO_WARNINGS" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="3" @@ -91,7 +91,7 @@ Name="VCPreLinkEventTool"/> + + + + Debug Library + ARM64 + + + Debug Library + Win32 + + + Debug + ARM64 + + + Debug + Win32 + + + Release Library + ARM64 + + + Release Library + Win32 + + + Release + ARM64 + + + Release + Win32 + + + + {277AC57F-313B-4D06-B119-A3CDB672D2FF} + Win32Proj + pngstest + + + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib + $(OutDir) + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib + $(OutDir) + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing libpng simplified API test program + "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png + $(IntDir)pngstest.out + $(OutDir)pngstest.exe + + + + + + + + + diff --git a/vendor/libpng/projects/vstudio/pngtest/pngtest.vcxproj b/vendor/libpng/projects/vstudio/pngtest/pngtest.vcxproj new file mode 100644 index 0000000000..58f662fcdc --- /dev/null +++ b/vendor/libpng/projects/vstudio/pngtest/pngtest.vcxproj @@ -0,0 +1,426 @@ + + + + + Debug Library + ARM64 + + + Debug Library + Win32 + + + Debug + ARM64 + + + Debug + Win32 + + + Release Library + ARM64 + + + Release Library + Win32 + + + Release + ARM64 + + + Release + Win32 + + + + {228BA965-50D5-42B2-8BCF-AFCC227E3C1D} + Win32Proj + pngtest + + + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib + $(OutDir) + + + Executing PNG test program + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib + $(OutDir) + + + Executing PNG test program + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG test program + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG test program + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + UseLinkTimeCodeGeneration + libpng16.lib + $(OutDir) + + + Executing PNG test program + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + UseLinkTimeCodeGeneration + libpng16.lib + $(OutDir) + + + Executing PNG test program + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + UseLinkTimeCodeGeneration + $(OutDir) + + + Executing PNG test program + $(OutDir)pngtest.exe ..\..\..\pngtest.png $(IntDir)pngout.png + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + UseLinkTimeCodeGeneration + $(OutDir) + + + Executing PNG test program + $(OutDir)pngtest.exe ..\..\..\pngtest.png $(IntDir)pngout.png + "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" + $(IntDir)pngout.png + ..\..\..\pngtest.png;$(OutDir)pngtest.exe + + + + + + + + + diff --git a/vendor/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj b/vendor/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj new file mode 100644 index 0000000000..c1568feb64 --- /dev/null +++ b/vendor/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj @@ -0,0 +1,424 @@ + + + + + Debug Library + ARM64 + + + Debug Library + Win32 + + + Debug + ARM64 + + + Debug + Win32 + + + Release Library + ARM64 + + + Release Library + Win32 + + + Release + ARM64 + + + Release + Win32 + + + + {C5D3156C-8C8C-4936-B35F-2B829BA36FEC} + Win32Proj + pngunknown + + + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png + $(IntDir)pngunknown.out + $(OutDir)pngunknown.exe + + + + + + + + + diff --git a/vendor/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj b/vendor/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj new file mode 100644 index 0000000000..d016df8152 --- /dev/null +++ b/vendor/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj @@ -0,0 +1,424 @@ + + + + + Debug Library + ARM64 + + + Debug Library + Win32 + + + Debug + ARM64 + + + Debug + Win32 + + + Release Library + ARM64 + + + Release Library + Win32 + + + Release + ARM64 + + + Release + Win32 + + + + {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8} + Win32Proj + pngvalid + + + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + Application + Unicode + v142 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + false + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + MultiThreadedDebugDLL + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + NotUsing + Level3 + false + ProgramDatabase + Disabled + EnableFastChecks + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + true + false + true + false + + + Console + true + libpng16.lib;zlib.lib + $(OutDir) + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + Level3 + NotUsing + ProgramDatabase + Full + MultiThreaded + false + true + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) + $(DisableSpecificWarnings) + false + false + true + false + true + true + false + + + Console + true + true + true + libpng16.lib;zlib.lib + $(OutDir) + UseLinkTimeCodeGeneration + + + Executing PNG validation program + "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" + $(IntDir)pngvalid.out + $(OutDir)pngvalid.exe + + + + + + + + + diff --git a/vendor/libpng/riscv/.editorconfig b/vendor/libpng/riscv/.editorconfig new file mode 100644 index 0000000000..de2e98ab42 --- /dev/null +++ b/vendor/libpng/riscv/.editorconfig @@ -0,0 +1,8 @@ +# https://editorconfig.org + +root = false + +# FIXME +[*.[ch]] +max_doc_length = unset +max_line_length = unset diff --git a/vendor/libpng/riscv/filter_rvv_intrinsics.c b/vendor/libpng/riscv/filter_rvv_intrinsics.c new file mode 100644 index 0000000000..a71e561bba --- /dev/null +++ b/vendor/libpng/riscv/filter_rvv_intrinsics.c @@ -0,0 +1,350 @@ +/* filter_rvv_intrinsics.c - RISC-V Vector optimized filter functions + * + * Copyright (c) 2023 Google LLC + * Written by Manfred SCHLAEGL, 2022 + * Dragoș Tiselice , May 2023. + * Filip Wasil , March 2025. + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + */ + +#include "../pngpriv.h" + +#ifdef PNG_READ_SUPPORTED + +#if PNG_RISCV_RVV_IMPLEMENTATION == 1 /* intrinsics code from pngpriv.h */ + +#include + +void +png_read_filter_row_up_rvv(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) +{ + size_t len = row_info->rowbytes; + + for (size_t vl; len > 0; len -= vl, row += vl, prev_row += vl) + { + vl = __riscv_vsetvl_e8m8(len); + + vuint8m8_t prev_vals = __riscv_vle8_v_u8m8(prev_row, vl); + vuint8m8_t row_vals = __riscv_vle8_v_u8m8(row, vl); + + row_vals = __riscv_vadd_vv_u8m8(row_vals, prev_vals, vl); + + __riscv_vse8_v_u8m8(row, row_vals, vl); + } +} + +static inline void +png_read_filter_row_sub_rvv(size_t len, size_t bpp, unsigned char* row) +{ + png_bytep rp_end = row + len; + + /* + * row: | a | x | + * + * a = a + x + * + * a .. [v0](e8) + * x .. [v8](e8) + */ + + size_t vl = __riscv_vsetvl_e8m1(bpp); + + /* a = *row */ + vuint8m1_t a = __riscv_vle8_v_u8m1(row, vl); + row += bpp; + + while (row < rp_end) + { + /* x = *row */ + vuint8m1_t x = __riscv_vle8_v_u8m1(row, vl); + + /* a = a + x */ + a = __riscv_vadd_vv_u8m1(a, x, vl); + + /* *row = a */ + __riscv_vse8_v_u8m1(row, a, vl); + row += bpp; + } +} + +void +png_read_filter_row_sub3_rvv(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) +{ + size_t len = row_info->rowbytes; + + png_read_filter_row_sub_rvv(len, 3, row); + + PNG_UNUSED(prev_row) +} + +void +png_read_filter_row_sub4_rvv(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) +{ + size_t len = row_info->rowbytes; + + png_read_filter_row_sub_rvv(len, 4, row); + + PNG_UNUSED(prev_row) +} + +static inline void +png_read_filter_row_avg_rvv(size_t len, size_t bpp, unsigned char* row, + const unsigned char* prev_row) +{ + png_bytep rp_end = row + len; + + /* + * row: | a | x | + * prev_row: | | b | + * + * a .. [v2](e8) + * b .. [v4](e8) + * x .. [v8](e8) + * tmp .. [v12-v13](e16) + */ + + /* first pixel */ + + size_t vl = __riscv_vsetvl_e8m1(bpp); + + /* b = *prev_row */ + vuint8m1_t b = __riscv_vle8_v_u8m1(prev_row, vl); + prev_row += bpp; + + /* x = *row */ + vuint8m1_t x = __riscv_vle8_v_u8m1(row, vl); + + /* b = b / 2 */ + b = __riscv_vsrl_vx_u8m1(b, 1, vl); + + /* a = x + b */ + vuint8m1_t a = __riscv_vadd_vv_u8m1(b, x, vl); + + /* *row = a */ + __riscv_vse8_v_u8m1(row, a, vl); + row += bpp; + + /* remaining pixels */ + while (row < rp_end) + { + /* b = *prev_row */ + b = __riscv_vle8_v_u8m1(prev_row, vl); + prev_row += bpp; + + /* x = *row */ + x = __riscv_vle8_v_u8m1(row, vl); + + /* tmp = a + b */ + vuint16m2_t tmp = __riscv_vwaddu_vv_u16m2(a, b, vl); + + /* a = tmp/2 */ + a = __riscv_vnsrl_wx_u8m1(tmp, 1, vl); + + /* a += x */ + a = __riscv_vadd_vv_u8m1(a, x, vl); + + /* *row = a */ + __riscv_vse8_v_u8m1(row, a, vl); + row += bpp; + } +} + +void +png_read_filter_row_avg3_rvv(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) +{ + size_t len = row_info->rowbytes; + + png_read_filter_row_avg_rvv(len, 3, row, prev_row); + + PNG_UNUSED(prev_row) +} + +void +png_read_filter_row_avg4_rvv(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) +{ + size_t len = row_info->rowbytes; + + png_read_filter_row_avg_rvv(len, 4, row, prev_row); + + PNG_UNUSED(prev_row) +} + +#define MIN_CHUNK_LEN 256 +#define MAX_CHUNK_LEN 2048 + +static inline vuint8m1_t +prefix_sum(vuint8m1_t chunk, unsigned char* carry, size_t vl, + size_t max_chunk_len) +{ + size_t r; + + for (r = 1; r < MIN_CHUNK_LEN; r <<= 1) + { + vbool8_t shift_mask = __riscv_vmsgeu_vx_u8m1_b8(__riscv_vid_v_u8m1(vl), r, vl); + chunk = __riscv_vadd_vv_u8m1_mu(shift_mask, chunk, chunk, __riscv_vslideup_vx_u8m1(__riscv_vundefined_u8m1(), chunk, r, vl), vl); + } + + for (r = MIN_CHUNK_LEN; r < MAX_CHUNK_LEN && r < max_chunk_len; r <<= 1) + { + vbool8_t shift_mask = __riscv_vmsgeu_vx_u8m1_b8(__riscv_vid_v_u8m1(vl), r, vl); + chunk = __riscv_vadd_vv_u8m1_mu(shift_mask, chunk, chunk, __riscv_vslideup_vx_u8m1(__riscv_vundefined_u8m1(), chunk, r, vl), vl); + } + + chunk = __riscv_vadd_vx_u8m1(chunk, *carry, vl); + *carry = __riscv_vmv_x_s_u8m1_u8(__riscv_vslidedown_vx_u8m1(chunk, vl - 1, vl)); + + return chunk; +} + +static inline vint16m1_t +abs_diff(vuint16m1_t a, vuint16m1_t b, size_t vl) +{ + vint16m1_t diff = __riscv_vreinterpret_v_u16m1_i16m1(__riscv_vsub_vv_u16m1(a, b, vl)); + vbool16_t mask = __riscv_vmslt_vx_i16m1_b16(diff, 0, vl); + return __riscv_vrsub_vx_i16m1_m(mask, diff, 0, vl); +} + +static inline vint16m1_t +abs_sum(vint16m1_t a, vint16m1_t b, size_t vl) +{ + return __riscv_vadd_vv_i16m1(a, b, vl); +} + +static inline void +png_read_filter_row_paeth_rvv(size_t len, size_t bpp, unsigned char* row, + const unsigned char* prev) +{ + png_bytep rp_end = row + len; + + /* + * row: | a | x | + * prev: | c | b | + * + * a .. [v2](e8) + * b .. [v4](e8) + * c .. [v6](e8) + * x .. [v8](e8) + * p .. [v12-v13](e16) + * pa, pb, pc .. [v16-v17, v20-v21, v24-v25](e16) + */ + + /* first pixel */ + + size_t vl = __riscv_vsetvl_e8m1(bpp); + + /* a = *row */ + vuint8m1_t a = __riscv_vle8_v_u8m1(row, vl); + + /* c = *prev */ + vuint8m1_t c = __riscv_vle8_v_u8m1(prev, vl); + + /* a += c */ + a = __riscv_vadd_vv_u8m1(a, c, vl); + + /* *row = a */ + __riscv_vse8_v_u8m1(row, a, vl); + row += bpp; + prev += bpp; + + /* remaining pixels */ + + while (row < rp_end) + { + /* b = *prev */ + vuint8m1_t b = __riscv_vle8_v_u8m1(prev, vl); + prev += bpp; + + /* x = *row */ + vuint8m1_t x = __riscv_vle8_v_u8m1(row, vl); + + /* Calculate p = b - c and pc = a - c using widening subtraction */ + vuint16m2_t p_wide = __riscv_vwsubu_vv_u16m2(b, c, vl); + vuint16m2_t pc_wide = __riscv_vwsubu_vv_u16m2(a, c, vl); + + /* Convert to signed for easier manipulation */ + size_t vl16 = __riscv_vsetvl_e16m2(bpp); + vint16m2_t p = __riscv_vreinterpret_v_u16m2_i16m2(p_wide); + vint16m2_t pc = __riscv_vreinterpret_v_u16m2_i16m2(pc_wide); + + /* pa = |p| */ + vbool8_t p_neg_mask = __riscv_vmslt_vx_i16m2_b8(p, 0, vl16); + vint16m2_t pa = __riscv_vrsub_vx_i16m2_m(p_neg_mask, p, 0, vl16); + + /* pb = |pc| */ + vbool8_t pc_neg_mask = __riscv_vmslt_vx_i16m2_b8(pc, 0, vl16); + vint16m2_t pb = __riscv_vrsub_vx_i16m2_m(pc_neg_mask, pc, 0, vl16); + + /* pc = |p + pc| */ + vint16m2_t p_plus_pc = __riscv_vadd_vv_i16m2(p, pc, vl16); + vbool8_t p_plus_pc_neg_mask = __riscv_vmslt_vx_i16m2_b8(p_plus_pc, 0, vl16); + pc = __riscv_vrsub_vx_i16m2_m(p_plus_pc_neg_mask, p_plus_pc, 0, vl16); + + /* + * The key insight is that we want the minimum of pa, pb, pc. + * - If pa <= pb and pa <= pc, use a + * - Else if pb <= pc, use b + * - Else use c + */ + + /* Find which predictor to use based on minimum absolute difference */ + vbool8_t pa_le_pb = __riscv_vmsle_vv_i16m2_b8(pa, pb, vl16); + vbool8_t pa_le_pc = __riscv_vmsle_vv_i16m2_b8(pa, pc, vl16); + vbool8_t pb_le_pc = __riscv_vmsle_vv_i16m2_b8(pb, pc, vl16); + + /* use_a = pa <= pb && pa <= pc */ + vbool8_t use_a = __riscv_vmand_mm_b8(pa_le_pb, pa_le_pc, vl16); + + /* use_b = !use_a && pb <= pc */ + vbool8_t not_use_a = __riscv_vmnot_m_b8(use_a, vl16); + vbool8_t use_b = __riscv_vmand_mm_b8(not_use_a, pb_le_pc, vl16); + + /* Switch back to e8m1 for final operations */ + vl = __riscv_vsetvl_e8m1(bpp); + + /* Start with a, then conditionally replace with b or c */ + vuint8m1_t result = a; + result = __riscv_vmerge_vvm_u8m1(result, b, use_b, vl); + + /* use_c = !use_a && !use_b */ + vbool8_t use_c = __riscv_vmnand_mm_b8(__riscv_vmor_mm_b8(use_a, use_b, vl), __riscv_vmor_mm_b8(use_a, use_b, vl), vl); + result = __riscv_vmerge_vvm_u8m1(result, c, use_c, vl); + + /* a = result + x */ + a = __riscv_vadd_vv_u8m1(result, x, vl); + + /* *row = a */ + __riscv_vse8_v_u8m1(row, a, vl); + row += bpp; + + /* c = b for next iteration */ + c = b; + } +} +void +png_read_filter_row_paeth3_rvv(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) +{ + size_t len = row_info->rowbytes; + + png_read_filter_row_paeth_rvv(len, 3, row, prev_row); +} + +void +png_read_filter_row_paeth4_rvv(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) +{ + size_t len = row_info->rowbytes; + + png_read_filter_row_paeth_rvv(len, 4, row, prev_row); +} + +#endif /* PNG_RISCV_RVV_IMPLEMENTATION == 1 */ +#endif /* PNG_READ_SUPPORTED */ diff --git a/vendor/libpng/riscv/riscv_init.c b/vendor/libpng/riscv/riscv_init.c new file mode 100644 index 0000000000..1d9982436a --- /dev/null +++ b/vendor/libpng/riscv/riscv_init.c @@ -0,0 +1,68 @@ +/* riscv_init.c - RISC-V Vector optimized filter functions + * + * Copyright (c) 2023 Google LLC + * Written by Dragoș Tiselice , May 2023. + * Filip Wasil , March 2025. + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + */ + +#include "../pngpriv.h" + +#ifdef PNG_READ_SUPPORTED + +#if PNG_RISCV_RVV_OPT > 0 + +#include + +#include + +#ifndef PNG_RISCV_RVV_FILE +# if defined(__linux__) +# define PNG_RISCV_RVV_FILE "contrib/riscv-rvv/linux.c" +# else +# error "No support for run-time RISC-V Vector checking; use compile-time options" +# endif +#endif + +static int png_have_rvv(); +#ifdef PNG_RISCV_RVV_FILE +# include PNG_RISCV_RVV_FILE +#endif + +#ifndef PNG_ALIGNED_MEMORY_SUPPORTED +# error "ALIGNED_MEMORY is required; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" +#endif + +void +png_init_filter_functions_rvv(png_structp pp, unsigned int bpp) +{ + png_debug(1, "in png_init_filter_functions_rvv"); + + static volatile sig_atomic_t no_rvv = -1; /* not checked */ + + if (no_rvv < 0) + no_rvv = !png_have_rvv(); + + if (no_rvv) + return; + + pp->read_filter[PNG_FILTER_VALUE_UP-1] = png_read_filter_row_up_rvv; + + if (bpp == 3) + { + pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_rvv; + pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth3_rvv; + pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_rvv; + } + else if (bpp == 4) + { + pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg4_rvv; + pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth4_rvv; + pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub4_rvv; + } +} + +#endif /* PNG_RISCV_RVV_OPT > 0 */ +#endif /* PNG_READ_SUPPORTED */ diff --git a/vendor/libpng/scripts/cmake/AUTHORS.md b/vendor/libpng/scripts/cmake/AUTHORS.md index c098217865..c25a50591f 100644 --- a/vendor/libpng/scripts/cmake/AUTHORS.md +++ b/vendor/libpng/scripts/cmake/AUTHORS.md @@ -29,6 +29,7 @@ Author List * Jeremy Maitin-Shepard * John Bowler * Jon Creighton + * Joost Nieuwenhuijse * Kyle Bentley * Martin Storsjö * Owen Rudge diff --git a/vendor/libpng/scripts/cmake/PNGCheckLibconf.cmake b/vendor/libpng/scripts/cmake/PNGCheckLibconf.cmake new file mode 100644 index 0000000000..14430bb361 --- /dev/null +++ b/vendor/libpng/scripts/cmake/PNGCheckLibconf.cmake @@ -0,0 +1,45 @@ +# PNGConfig.cmake +# Utility functions for configuring and building libpng + +# Copyright (c) 2025 Cosmin Truta +# +# Use, modification and distribution are subject to +# the same licensing terms and conditions as libpng. +# Please see the copyright notice in png.h or visit +# http://libpng.org/pub/png/src/libpng-LICENSE.txt +# +# SPDX-License-Identifier: libpng-2.0 + +# Check libconf file (pnglibconf.h.* or *.dfa): +# png_check_libconf([HEADER ] [DFA_XTRA ]) +function(png_check_libconf) + set(options) + set(oneValueArgs HEADER DFA_XTRA) + set(multiValueArgs) + + cmake_parse_arguments(_CHK "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if(_CHK_HEADER AND _CHK_DFA_XTRA) + message(FATAL_ERROR "png_check_libconf: Mutually-exclusive arguments: HEADER and DFA_XTRA") + endif() + + if(_CHK_HEADER) + if(EXISTS "${_CHK_HEADER}") + if("x${_CHK_HEADER}" STREQUAL "x${PNG_LIBCONF_HEADER_PREBUILT}") + message(STATUS "Using standard libconf header: ${_CHK_HEADER}") + else() + message(STATUS "Using custom libconf header: ${_CHK_HEADER}") + endif() + else() + message(SEND_ERROR "Could not find libconf header: ${_CHK_HEADER}") + endif() + else() + if("x${_CHK_DFA_XTRA}" STREQUAL "x") + message(STATUS "Creating standard configuration") + elseif(EXISTS "${_CHK_DFA_XTRA}") + message(STATUS "Creating custom configuration with DFA_XTRA file: ${_CHK_DFA_XTRA}") + else() + message(SEND_ERROR "Could not find DFA_XTRA file: ${_CHK_DFA_XTRA}") + endif() + endif() +endfunction() diff --git a/vendor/libpng/scripts/cmake/PNGGenConfig.cmake b/vendor/libpng/scripts/cmake/PNGGenConfig.cmake index 4a0030edde..dd66b91131 100644 --- a/vendor/libpng/scripts/cmake/PNGGenConfig.cmake +++ b/vendor/libpng/scripts/cmake/PNGGenConfig.cmake @@ -18,21 +18,21 @@ function(generate_chk) set(options) set(oneValueArgs INPUT OUTPUT) set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT _GC_INPUT) + cmake_parse_arguments(_GENCHK "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GENCHK_INPUT) message(FATAL_ERROR "generate_chk: Missing INPUT argument") endif() - if(NOT _GC_OUTPUT) + if(NOT _GENCHK_OUTPUT) message(FATAL_ERROR "generate_chk: Missing OUTPUT argument") endif() # Run genchk.cmake to generate the .chk file. - add_custom_command(OUTPUT "${_GC_OUTPUT}" + add_custom_command(OUTPUT "${_GENCHK_OUTPUT}" COMMAND "${CMAKE_COMMAND}" - "-DINPUT=${_GC_INPUT}" - "-DOUTPUT=${_GC_OUTPUT}" + "-DINPUT=${_GENCHK_INPUT}" + "-DOUTPUT=${_GENCHK_OUTPUT}" -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genchk.cmake" - DEPENDS "${_GC_INPUT}" ${_GC_DEPENDS} + DEPENDS "${_GENCHK_INPUT}" ${_GENCHK_DEPENDS} WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") endfunction() @@ -42,21 +42,21 @@ function(generate_out) set(options) set(oneValueArgs INPUT OUTPUT) set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT _GO_INPUT) + cmake_parse_arguments(_GENOUT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GENOUT_INPUT) message(FATAL_ERROR "generate_out: Missing INPUT argument") endif() - if(NOT _GO_OUTPUT) + if(NOT _GENOUT_OUTPUT) message(FATAL_ERROR "generate_out: Missing OUTPUT argument") endif() # Run genout.cmake to generate the .out file. - add_custom_command(OUTPUT "${_GO_OUTPUT}" + add_custom_command(OUTPUT "${_GENOUT_OUTPUT}" COMMAND "${CMAKE_COMMAND}" - "-DINPUT=${_GO_INPUT}" - "-DOUTPUT=${_GO_OUTPUT}" + "-DINPUT=${_GENOUT_INPUT}" + "-DOUTPUT=${_GENOUT_OUTPUT}" -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genout.cmake" - DEPENDS "${_GO_INPUT}" ${_GO_DEPENDS} + DEPENDS "${_GENOUT_INPUT}" ${_GENOUT_DEPENDS} WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") endfunction() @@ -66,17 +66,17 @@ function(generate_source) set(options) set(oneValueArgs OUTPUT) set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GSO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT _GSO_OUTPUT) + cmake_parse_arguments(_GENSRC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GENSRC_OUTPUT) message(FATAL_ERROR "generate_source: Missing OUTPUT argument") endif() # Run gensrc.cmake to generate the source file. - add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${_GSO_OUTPUT}" + add_custom_command(OUTPUT "${_GENSRC_OUTPUT}" COMMAND "${CMAKE_COMMAND}" - "-DOUTPUT=${_GSO_OUTPUT}" + "-DOUTPUT=${_GENSRC_OUTPUT}" -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/gensrc.cmake" - DEPENDS ${_GSO_DEPENDS} + DEPENDS ${_GENSRC_DEPENDS} WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") endfunction() @@ -86,19 +86,19 @@ function(generate_copy) set(options) set(oneValueArgs INPUT OUTPUT) set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GCO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT _GCO_INPUT) + cmake_parse_arguments(_GENCPY "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GENCPY_INPUT) message(FATAL_ERROR "generate_copy: Missing INPUT argument") endif() - if(NOT _GCO_OUTPUT) + if(NOT _GENCPY_OUTPUT) message(FATAL_ERROR "generate_copy: Missing OUTPUT argument") endif() # Make a forced file copy, overwriting any pre-existing output file. - add_custom_command(OUTPUT "${_GCO_OUTPUT}" + add_custom_command(OUTPUT "${_GENCPY_OUTPUT}" COMMAND "${CMAKE_COMMAND}" - -E remove "${_GCO_OUTPUT}" + -E remove "${_GENCPY_OUTPUT}" COMMAND "${CMAKE_COMMAND}" - -E copy "${_GCO_INPUT}" "${_GCO_OUTPUT}" - DEPENDS "${source}" ${_GCO_DEPENDS}) + -E copy "${_GENCPY_INPUT}" "${_GENCPY_OUTPUT}" + DEPENDS "${_GENCPY_INPUT}" ${_GENCPY_DEPENDS}) endfunction() diff --git a/vendor/libpng/scripts/cmake/genout.cmake.in b/vendor/libpng/scripts/cmake/genout.cmake.in index d4a333282f..242aa8ab3f 100644 --- a/vendor/libpng/scripts/cmake/genout.cmake.in +++ b/vendor/libpng/scripts/cmake/genout.cmake.in @@ -1,7 +1,7 @@ # genout.cmake.in # Generate .out from .c with awk (generic), based upon the automake logic. -# Copyright (c) 2022-2024 Cosmin Truta +# Copyright (c) 2022-2025 Cosmin Truta # Copyright (c) 2016 Glenn Randers-Pehrson # Written by Roger Leigh, 2016 # @@ -16,6 +16,7 @@ set(SRCDIR "@CMAKE_CURRENT_SOURCE_DIR@") set(BINDIR "@CMAKE_CURRENT_BINARY_DIR@") +set(APPLE "@APPLE@") set(AWK "@AWK@") set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@") set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@) diff --git a/vendor/libpng/scripts/cmake/gensrc.cmake.in b/vendor/libpng/scripts/cmake/gensrc.cmake.in index 52dab8d2bc..f915394a2c 100644 --- a/vendor/libpng/scripts/cmake/gensrc.cmake.in +++ b/vendor/libpng/scripts/cmake/gensrc.cmake.in @@ -21,8 +21,8 @@ set(DFA_XTRA "@DFA_XTRA@") set(PNG_PREFIX "@PNG_PREFIX@") set(PNGLIB_VERSION "@PNGLIB_VERSION@") -if(OUTPUT STREQUAL "scripts/pnglibconf.c") - # Generate scripts/pnglibconf.c +if(OUTPUT MATCHES "(scripts/pnglibconf\\.c)\$") + # Generate "${BINDIR}/scripts/pnglibconf.c" file(REMOVE "${BINDIR}/pnglibconf.tf6" "${BINDIR}/pnglibconf.tf7") @@ -49,8 +49,8 @@ if(OUTPUT STREQUAL "scripts/pnglibconf.c") file(MAKE_DIRECTORY "${BINDIR}/scripts") file(RENAME "pnglibconf.tf7" "${BINDIR}/scripts/pnglibconf.c") -elseif(OUTPUT STREQUAL "pnglibconf.c") - # Generate pnglibconf.c +elseif(OUTPUT MATCHES "(pnglibconf\\.c)\$") + # Generate "${BINDIR}/pnglibconf.c" file(REMOVE "${BINDIR}/pnglibconf.tf4" "${BINDIR}/pnglibconf.tf5") @@ -76,10 +76,10 @@ elseif(OUTPUT STREQUAL "pnglibconf.c") file(MAKE_DIRECTORY "${BINDIR}/scripts") file(RENAME "pnglibconf.tf5" "${BINDIR}/pnglibconf.c") -elseif(OUTPUT STREQUAL "pnglibconf.h") - # Generate pnglibconf.h +elseif(OUTPUT MATCHES "(pnglibconf\\.h)\$") + # Generate "${BINDIR}/pnglibconf.h" - file(REMOVE "${BINDIR}/${OUTPUT}") + file(REMOVE "${OUTPUT}") if(PNG_PREFIX) file(REMOVE "pnglibconf.tf8") @@ -95,20 +95,21 @@ elseif(OUTPUT STREQUAL "pnglibconf.h") message(FATAL_ERROR "Failed to generate pnglibconf.tf8") endif() - file(RENAME "pnglibconf.tf8" "${BINDIR}/${OUTPUT}") + file(RENAME "pnglibconf.tf8" "${OUTPUT}") else() - execute_process(COMMAND "${CMAKE_COMMAND}" -E copy "${BINDIR}/pnglibconf.out" - "${BINDIR}/${OUTPUT}" + execute_process(COMMAND "${CMAKE_COMMAND}" -E copy "pnglibconf.out" + "${OUTPUT}" + WORKING_DIRECTORY "${BINDIR}" RESULT_VARIABLE COPY_FAIL) if(COPY_FAIL) message(FATAL_ERROR "Failed to create pnglibconf.h") endif() endif() -elseif(OUTPUT STREQUAL "pngprefix.h") - # Generate pngprefix.h +elseif(OUTPUT MATCHES "(pngprefix\\.h)\$") + # Generate "${BINDIR}/pngprefix.h" - file(REMOVE "${BINDIR}/${OUTPUT}") + file(REMOVE "${OUTPUT}") if(PNG_PREFIX) file(REMOVE "pngprefix.tf1") @@ -122,12 +123,12 @@ elseif(OUTPUT STREQUAL "pngprefix.h") message(FATAL_ERROR "Failed to generate pngprefix.tf1") endif() - file(RENAME "pngprefix.tf1" "${BINDIR}/${OUTPUT}") + file(RENAME "pngprefix.tf1" "${OUTPUT}") else() - file(WRITE "${BINDIR}/${OUTPUT}" "/* No libpng symbol prefix configured. */") + file(WRITE "${OUTPUT}" "/* No libpng symbol prefix configured. */") endif() -elseif(OUTPUT STREQUAL "scripts/pnglibconf.h.prebuilt") +elseif(OUTPUT MATCHES "(scripts/pnglibconf\\.h\\.prebuilt)\$") # Generate scripts/pnglibconf.h.prebuilt (fails build) message(STATUS "Attempting to build scripts/pnglibconf.h.prebuilt") diff --git a/vendor/libpng/scripts/libpng-config-head.in b/vendor/libpng/scripts/libpng-config-head.in index 12574fcab2..416da2e628 100644 --- a/vendor/libpng/scripts/libpng-config-head.in +++ b/vendor/libpng/scripts/libpng-config-head.in @@ -11,7 +11,7 @@ # Modeled after libxml-config. -version=1.6.47 +version=1.6.50 prefix="" libdir="" libs="" diff --git a/vendor/libpng/scripts/libpng.pc.in b/vendor/libpng/scripts/libpng.pc.in index 10e29bfbd9..139441a0bb 100644 --- a/vendor/libpng/scripts/libpng.pc.in +++ b/vendor/libpng/scripts/libpng.pc.in @@ -5,6 +5,6 @@ includedir=@includedir@/libpng16 Name: libpng Description: Loads and saves PNG files -Version: 1.6.47 +Version: 1.6.50 Libs: -L${libdir} -lpng16 Cflags: -I${includedir} diff --git a/vendor/libpng/scripts/makefile.c89 b/vendor/libpng/scripts/makefile.c89 index 1f2fc1d61c..2000d57269 100644 --- a/vendor/libpng/scripts/makefile.c89 +++ b/vendor/libpng/scripts/makefile.c89 @@ -22,7 +22,8 @@ RM_F = rm -f # Compiler and linker flags NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \ - -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 + -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 \ + -DPNG_RISCV_RVV_OPT=0 STDC = -pedantic-errors -std=c89 WARN = -Wall -Wextra -Wundef WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \ diff --git a/vendor/libpng/scripts/makefile.clang b/vendor/libpng/scripts/makefile.clang index 52eaa1badc..6f48e99a3d 100644 --- a/vendor/libpng/scripts/makefile.clang +++ b/vendor/libpng/scripts/makefile.clang @@ -21,7 +21,8 @@ RM_F = rm -f # Compiler and linker flags NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \ - -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 + -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 \ + -DPNG_RISCV_RVV_OPT=0 STDC = -pedantic-errors # -std=c99 WARN = -Wall -Wextra -Wundef WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \ diff --git a/vendor/libpng/scripts/makefile.darwin b/vendor/libpng/scripts/makefile.darwin index 3e42c5c8e9..ad4f257316 100644 --- a/vendor/libpng/scripts/makefile.darwin +++ b/vendor/libpng/scripts/makefile.darwin @@ -28,7 +28,8 @@ RM_F=rm -f # Compiler and linker flags NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \ - -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 + -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 \ + -DPNG_RISCV_RVV_OPT=0 STDC = -pedantic-errors WARN = -Wall -Wextra -Wundef WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \ diff --git a/vendor/libpng/scripts/makefile.gcc b/vendor/libpng/scripts/makefile.gcc index 7a11744dcc..aae145849b 100644 --- a/vendor/libpng/scripts/makefile.gcc +++ b/vendor/libpng/scripts/makefile.gcc @@ -21,7 +21,8 @@ RM_F = rm -f # Compiler and linker flags NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \ - -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 + -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 \ + -DPNG_RISCV_RVV_OPT=0 STDC = -pedantic-errors # -std=c99 WARN = -Wall -Wextra -Wundef WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \ diff --git a/vendor/libpng/scripts/makefile.linux b/vendor/libpng/scripts/makefile.linux index 09bbe24812..a26d929381 100644 --- a/vendor/libpng/scripts/makefile.linux +++ b/vendor/libpng/scripts/makefile.linux @@ -26,7 +26,8 @@ RM_F=rm -f # Compiler and linker flags NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \ - -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 + -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 \ + -DPNG_RISCV_RVV_OPT=0 STDC = -pedantic-errors WARN = -Wall -Wextra -Wundef WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \ diff --git a/vendor/libpng/scripts/makefile.msys b/vendor/libpng/scripts/makefile.msys index 3951c7467d..1386af5781 100644 --- a/vendor/libpng/scripts/makefile.msys +++ b/vendor/libpng/scripts/makefile.msys @@ -32,7 +32,8 @@ LN_SF = ln -sf # Compiler and linker flags NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \ - -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 + -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 \ + -DPNG_RISCV_RVV_OPT=0 STDC = -pedantic-errors WARN = -Wall -Wextra -Wundef WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \ diff --git a/vendor/libpng/scripts/makefile.std b/vendor/libpng/scripts/makefile.std index 5c793eaf29..5a01af4e09 100644 --- a/vendor/libpng/scripts/makefile.std +++ b/vendor/libpng/scripts/makefile.std @@ -23,7 +23,8 @@ RM_F = rm -f AWK = awk NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \ - -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 + -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 \ + -DPNG_RISCV_RVV_OPT=0 DFNFLAGS = # DFNFLAGS contains -D options to use in the libpng build DFA_EXTRA = # extra files that can be used to control configuration CPPFLAGS = -I$(ZLIBINC) $(NOHWOPT) # -DPNG_DEBUG=5 diff --git a/vendor/libpng/scripts/pnglibconf.h.prebuilt b/vendor/libpng/scripts/pnglibconf.h.prebuilt index 748220bfc1..f15fc16dad 100644 --- a/vendor/libpng/scripts/pnglibconf.h.prebuilt +++ b/vendor/libpng/scripts/pnglibconf.h.prebuilt @@ -1,6 +1,6 @@ /* pnglibconf.h - library build configuration */ -/* libpng version 1.6.47 */ +/* libpng version 1.6.50 */ /* Copyright (c) 2018-2025 Cosmin Truta */ /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ diff --git a/vendor/libpng/test-driver b/vendor/libpng/test-driver index dc38f623f4..d81fba79cd 100644 --- a/vendor/libpng/test-driver +++ b/vendor/libpng/test-driver @@ -1,9 +1,9 @@ #! /bin/sh # test-driver - basic testsuite driver script. -scriptversion=2024-06-19.01; # UTC +scriptversion=2025-06-18.21; # UTC -# Copyright (C) 2011-2024 Free Software Foundation, Inc. +# Copyright (C) 2011-2025 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -152,9 +152,9 @@ echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/vendor/libpng/tests/pngstest b/vendor/libpng/tests/pngstest new file mode 100644 index 0000000000..9d1b7764e5 --- /dev/null +++ b/vendor/libpng/tests/pngstest @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Usage: +# +# tests/pngstest gamma alpha +# +# Run ./pngstest on the PNG files in $srcdir/contrib/testpngs which have the +# given gamma and opacity: +# +# gamma: one of; linear, 1.8, sRGB, none. +# alpha: one of; opaque, tRNS, alpha, none. 'none' is equivalent to !alpha +# +# NOTE: the temporary files pngstest generates have the base name gamma-alpha to +# avoid issues with make -j +# +gamma="$1" +shift +alpha="$1" +shift +args= +LC_ALL="C" # fix glob sort order to ASCII: +for f in "${srcdir}/contrib/testpngs/"*.png +do + g= + case "$f" in + *-linear[.-]*) + test "$gamma" = "linear" && g="$f";; + + *-sRGB[.-]*) + test "$gamma" = "sRGB" && g="$f";; + + *-1.8[.-]*) + test "$gamma" = "1.8" && g="$f";; + + *) + test "$gamma" = "none" && g="$f";; + esac + + case "$g" in + "") + :;; + + *-alpha[-.]*) + test "$alpha" = "alpha" && args="$args $g";; + + *-tRNS[-.]*) + test "$alpha" = "tRNS" -o "$alpha" = "none" && args="$args $g";; + + *) + test "$alpha" = "opaque" -o "$alpha" = "none" && args="$args $g";; + esac +done +# This only works if the arguments don't contain spaces; they don't. +exec ./pngstest --tmpfile "${gamma}-${alpha}-" --log ${1+"$@"} $args