mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
Compare commits
54 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7cecdcae07 | ||
![]() |
cf59edd364 | ||
![]() |
2b978915d8 | ||
![]() |
254a64ec30 | ||
![]() |
9eb25bd899 | ||
![]() |
8087a21d0a | ||
![]() |
2e5f296bfa | ||
![]() |
4266c75f40 | ||
![]() |
f451a4de09 | ||
![]() |
6aa47debba | ||
![]() |
3391bb98e3 | ||
![]() |
21895b05ab | ||
![]() |
be81ebe1a4 | ||
![]() |
edf46621f3 | ||
![]() |
5dc5937b30 | ||
![]() |
7084241c75 | ||
![]() |
640204280f | ||
![]() |
740366c32b | ||
![]() |
5d53dfd20c | ||
![]() |
5b62726ced | ||
![]() |
a5830bfcb1 | ||
![]() |
3bca02e274 | ||
![]() |
197bbfe0d5 | ||
![]() |
0cc6436ef5 | ||
![]() |
f04c457a51 | ||
![]() |
5631b9b952 | ||
![]() |
dc71f481ff | ||
![]() |
e2c1579816 | ||
![]() |
cff8620272 | ||
![]() |
5be32eb35c | ||
![]() |
611bf1016c | ||
![]() |
0e37c0b477 | ||
![]() |
7108843467 | ||
![]() |
2b0eb78656 | ||
![]() |
ffb8e8b26f | ||
![]() |
cc5ee6b213 | ||
![]() |
b4800bae33 | ||
![]() |
ea12796820 | ||
![]() |
643dbda7d6 | ||
![]() |
34e3f7a65b | ||
![]() |
3e67531078 | ||
![]() |
23bdc7a6c4 | ||
![]() |
69a3e5bfd1 | ||
![]() |
c90491724e | ||
![]() |
98448e372d | ||
![]() |
f2b0f5fe1c | ||
![]() |
7101a5569f | ||
![]() |
e046c0dc3b | ||
![]() |
34005e3d3d | ||
![]() |
44f97f08d7 | ||
![]() |
044536de92 | ||
![]() |
738f5e743c | ||
![]() |
f20e66aa93 | ||
![]() |
5d09501462 |
@ -39,8 +39,8 @@ disabled_codes: [
|
|||||||
# re-enable the "invalid variable name XXX" messages.
|
# re-enable the "invalid variable name XXX" messages.
|
||||||
"C0103",
|
"C0103",
|
||||||
|
|
||||||
# A custom command with one output doesn't really need a comment because
|
# TODO:
|
||||||
# the default "generating XXX" is a good message already.
|
# Add brief COMMENT arguments to the `add_custom_target` commands.
|
||||||
"C0113",
|
"C0113",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -82,10 +82,10 @@ keyword_pattern: "[A-Z][0-9A-Z_]+"
|
|||||||
# before considering the loop a parser
|
# before considering the loop a parser
|
||||||
max_conditionals_custom_parser: 2
|
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
|
min_statement_spacing: 1
|
||||||
|
|
||||||
# Require no more than this many newlines between statements
|
|
||||||
max_statement_spacing: 2
|
max_statement_spacing: 2
|
||||||
max_returns: 6
|
max_returns: 6
|
||||||
max_branches: 12
|
max_branches: 12
|
||||||
|
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@ -23,6 +23,8 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-pip-
|
restore-keys: ${{ runner.os }}-pip-
|
||||||
- name: Install yamllint
|
- name: Install yamllint
|
||||||
run: pip install yamllint
|
run: pip install yamllint
|
||||||
|
- name: Install editorconfig-checker
|
||||||
|
uses: editorconfig-checker/action-editorconfig-checker@main
|
||||||
- name: Check out the code
|
- name: Check out the code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Run the linting script
|
- name: Run the linting script
|
||||||
|
24
.gitignore
vendored
24
.gitignore
vendored
@ -122,6 +122,7 @@ ipch/
|
|||||||
*.out
|
*.out
|
||||||
*out.png
|
*out.png
|
||||||
[._]deps/
|
[._]deps/
|
||||||
|
[._]libs/
|
||||||
.dirstamp
|
.dirstamp
|
||||||
/Makefile
|
/Makefile
|
||||||
/autom4te.cache/
|
/autom4te.cache/
|
||||||
@ -143,13 +144,16 @@ pnglibconf.dfn
|
|||||||
pnglibconf.pre
|
pnglibconf.pre
|
||||||
pngprefix.h
|
pngprefix.h
|
||||||
|
|
||||||
# Libpng test programs
|
# Libpng test programs, scripts and artifacts
|
||||||
png-fix-itxt
|
/test-suite.log
|
||||||
pngcp
|
/tests/*.log
|
||||||
pngfix
|
/tests/*.trs
|
||||||
pngimage
|
/png-fix-itxt
|
||||||
pngstest
|
/pngcp
|
||||||
pngtest
|
/pngfix
|
||||||
pngunknown
|
/pngimage
|
||||||
pngvalid
|
/pngstest
|
||||||
timepng
|
/pngtest
|
||||||
|
/pngunknown
|
||||||
|
/pngvalid
|
||||||
|
/timepng
|
||||||
|
28
.travis.yml
28
.travis.yml
@ -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'
|
|
39
ANNOUNCE
39
ANNOUNCE
@ -1,5 +1,13 @@
|
|||||||
libpng 1.6.47 - February 18, 2025
|
libpng 1.6.51.git
|
||||||
=================================
|
=================
|
||||||
|
|
||||||
|
This is a development version, not intended to be a public release.
|
||||||
|
It will be replaced by a public release, or by another development
|
||||||
|
version, at a later time.
|
||||||
|
|
||||||
|
|
||||||
|
libpng 1.6.50 - July 1, 2025
|
||||||
|
============================
|
||||||
|
|
||||||
This is a public release of libpng, intended for use in production code.
|
This is a public release of libpng, intended for use in production code.
|
||||||
|
|
||||||
@ -9,13 +17,13 @@ Files available for download
|
|||||||
|
|
||||||
Source files with LF line endings (for Unix/Linux):
|
Source files with LF line endings (for Unix/Linux):
|
||||||
|
|
||||||
* libpng-1.6.47.tar.xz (LZMA-compressed, recommended)
|
* libpng-1.6.50.tar.xz (LZMA-compressed, recommended)
|
||||||
* libpng-1.6.47.tar.gz (deflate-compressed)
|
* libpng-1.6.50.tar.gz (deflate-compressed)
|
||||||
|
|
||||||
Source files with CRLF line endings (for Windows):
|
Source files with CRLF line endings (for Windows):
|
||||||
|
|
||||||
* lpng1647.7z (LZMA-compressed, recommended)
|
* lpng1650.7z (LZMA-compressed, recommended)
|
||||||
* lpng1647.zip (deflate-compressed)
|
* lpng1650.zip (deflate-compressed)
|
||||||
|
|
||||||
Other information:
|
Other information:
|
||||||
|
|
||||||
@ -25,19 +33,18 @@ Other information:
|
|||||||
* TRADEMARK.md
|
* 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
|
* Improved the detection of the RVV Extension on the RISC-V platform.
|
||||||
to the new precedence rules formulated in the latest draft of
|
(Contributed by Filip Wasil)
|
||||||
the PNG Specification.
|
* 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)
|
(Contributed by John Bowler)
|
||||||
* Fixed a latent bug in `png_write_iCCP`.
|
* Fixed the CMake file for cross-platform builds that require `libm`.
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
|
Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
|
||||||
|
6
AUTHORS
6
AUTHORS
@ -20,6 +20,7 @@ Authors, for copyright and licensing purposes.
|
|||||||
* Lucas Chollet
|
* Lucas Chollet
|
||||||
* Magnus Holmgren
|
* Magnus Holmgren
|
||||||
* Mandar Sahastrabuddhe
|
* Mandar Sahastrabuddhe
|
||||||
|
* Manfred Schlaegl
|
||||||
* Mans Rullgard
|
* Mans Rullgard
|
||||||
* Matt Sarett
|
* Matt Sarett
|
||||||
* Mike Klein
|
* Mike Klein
|
||||||
@ -40,8 +41,9 @@ Authors, for copyright and licensing purposes.
|
|||||||
- Zixu Wang (王子旭)
|
- Zixu Wang (王子旭)
|
||||||
* Arm Holdings
|
* Arm Holdings
|
||||||
- Richard Townsend
|
- Richard Townsend
|
||||||
* Google Inc.
|
* Google LLC
|
||||||
- Dan Field
|
- Dan Field
|
||||||
|
- Dragoș Tiselice
|
||||||
- Leon Scroggins III
|
- Leon Scroggins III
|
||||||
- Matt Sarett
|
- Matt Sarett
|
||||||
- Mike Klein
|
- Mike Klein
|
||||||
@ -51,6 +53,8 @@ Authors, for copyright and licensing purposes.
|
|||||||
- GuXiWei (顾希伟)
|
- GuXiWei (顾希伟)
|
||||||
- JinBo (金波)
|
- JinBo (金波)
|
||||||
- ZhangLixia (张利霞)
|
- ZhangLixia (张利霞)
|
||||||
|
* Samsung Group
|
||||||
|
- Filip Wasil
|
||||||
|
|
||||||
The build projects, the build scripts, the test scripts, and other
|
The build projects, the build scripts, the test scripts, and other
|
||||||
files in the "projects", "scripts" and "tests" directories, have
|
files in the "projects", "scripts" and "tests" directories, have
|
||||||
|
29
CHANGES
29
CHANGES
@ -6251,6 +6251,35 @@ Version 1.6.47 [February 18, 2025]
|
|||||||
colorspace precedence rules, due to pre-existing colorspace checks.
|
colorspace precedence rules, due to pre-existing colorspace checks.
|
||||||
(Reported by Bob Friesenhahn; fixed by John Bowler)
|
(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`.
|
||||||
|
|
||||||
|
Version 1.6.51 [TODO]
|
||||||
|
|
||||||
Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
|
Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
|
||||||
Subscription is required; visit
|
Subscription is required; visit
|
||||||
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
|
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
|
||||||
|
518
CMakeLists.txt
518
CMakeLists.txt
@ -14,13 +14,13 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: libpng-2.0
|
# 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_MAJOR 1)
|
||||||
set(PNGLIB_MINOR 6)
|
set(PNGLIB_MINOR 6)
|
||||||
set(PNGLIB_REVISION 47)
|
set(PNGLIB_REVISION 51)
|
||||||
set(PNGLIB_SUBREVISION 0)
|
#set(PNGLIB_SUBREVISION 0)
|
||||||
#set(PNGLIB_SUBREVISION "git")
|
set(PNGLIB_SUBREVISION "git")
|
||||||
set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_REVISION})
|
set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_REVISION})
|
||||||
set(PNGLIB_ABI_VERSION ${PNGLIB_MAJOR}${PNGLIB_MINOR})
|
set(PNGLIB_ABI_VERSION ${PNGLIB_MAJOR}${PNGLIB_MINOR})
|
||||||
set(PNGLIB_SHARED_VERSION ${PNGLIB_ABI_VERSION}.${PNGLIB_REVISION}.${PNGLIB_SUBREVISION})
|
set(PNGLIB_SHARED_VERSION ${PNGLIB_ABI_VERSION}.${PNGLIB_REVISION}.${PNGLIB_SUBREVISION})
|
||||||
@ -30,29 +30,55 @@ project(libpng
|
|||||||
LANGUAGES C ASM)
|
LANGUAGES C ASM)
|
||||||
|
|
||||||
include(CheckCSourceCompiles)
|
include(CheckCSourceCompiles)
|
||||||
|
include(CheckLibraryExists)
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# Allow the users to specify an application-specific API prefix for libpng
|
# Allow the users to specify an application-specific API prefix for libpng
|
||||||
# vendoring purposes. A standard libpng build should have no such prefix.
|
# 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")
|
CACHE STRING "Prefix to prepend to the API function names")
|
||||||
|
|
||||||
# Allow the users to override the postfix appended to debug library file 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
|
# Previously, we used to set CMAKE_DEBUG_POSTFIX globally. That variable should
|
||||||
# not be cached, however, because doing so would affect all projects processed
|
# not be cached, however, because doing so would affect all projects processed
|
||||||
# after libpng, in unexpected and undesirable ways.
|
# 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")
|
CACHE STRING "Postfix to append to library file names under the Debug configuration")
|
||||||
|
|
||||||
# Allow the users to import their own extra configuration settings.
|
# Allow the users to import their own extra configuration settings.
|
||||||
set(DFA_XTRA ""
|
# Those settings can be either passed via DFA_XTRA if they are in DFA form
|
||||||
CACHE FILEPATH "File containing extra configuration settings")
|
# (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.
|
# Allow the users to switch on/off various library build types.
|
||||||
option(PNG_SHARED "Build libpng as a shared library" ON)
|
option(PNG_SHARED "Build libpng as a shared library" ON)
|
||||||
option(PNG_STATIC "Build libpng as a static library" ON)
|
option(PNG_STATIC "Build libpng as a static library" ON)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
option(PNG_FRAMEWORK "Build libpng as a framework bundle" ON)
|
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()
|
endif()
|
||||||
|
|
||||||
# Allow the users to switch on/off the auxiliary build and test artifacts.
|
# 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)
|
if(NOT PNG_EXECUTABLES)
|
||||||
message(DEPRECATION "The option PNG_EXECUTABLES has been deprecated in favour of PNG_TOOLS")
|
message(DEPRECATION "The option PNG_EXECUTABLES has been deprecated in favour of PNG_TOOLS")
|
||||||
if(PNG_TOOLS)
|
if(PNG_TOOLS)
|
||||||
message(AUTHOR_WARNING
|
message(AUTHOR_WARNING "Setting PNG_TOOLS to ${PNG_EXECUTABLES}, "
|
||||||
"Setting PNG_TOOLS to ${PNG_EXECUTABLES}, to stay compatible with PNG_EXECUTABLES")
|
"to stay compatible with PNG_EXECUTABLES")
|
||||||
set(PNG_TOOLS "${PNG_EXECUTABLES}")
|
set(PNG_TOOLS "${PNG_EXECUTABLES}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Allow the users to configure various compilation options.
|
# Allow the users to switch on/off the use of hardware (SIMD) optimized code.
|
||||||
option(PNG_DEBUG "Enable debug output" OFF)
|
|
||||||
option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON)
|
option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON)
|
||||||
|
|
||||||
# Initialize and show the target architecture variable PNG_TARGET_ARCHITECTURE.
|
# 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)
|
option(PNG_BUILD_ZLIB "[Deprecated; please use ZLIB_ROOT]" OFF)
|
||||||
if(PNG_BUILD_ZLIB)
|
if(PNG_BUILD_ZLIB)
|
||||||
if("x${ZLIB_ROOT}" STREQUAL "x")
|
if("x${ZLIB_ROOT}" STREQUAL "x")
|
||||||
message(SEND_ERROR
|
message(SEND_ERROR "The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; "
|
||||||
"The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; "
|
|
||||||
"please use ZLIB_ROOT instead")
|
"please use ZLIB_ROOT instead")
|
||||||
else()
|
else()
|
||||||
message(SEND_ERROR
|
message(SEND_ERROR "The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; "
|
||||||
"The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; "
|
|
||||||
"using ZLIB_ROOT=\"${ZLIB_ROOT}\"")
|
"using ZLIB_ROOT=\"${ZLIB_ROOT}\"")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Find the zlib library.
|
||||||
find_package(ZLIB REQUIRED)
|
find_package(ZLIB REQUIRED)
|
||||||
|
set(PNG_LINK_LIBRARIES ZLIB::ZLIB)
|
||||||
|
|
||||||
if(UNIX
|
# Find the math library (unless we already know it's not available or
|
||||||
AND NOT (APPLE OR BEOS OR HAIKU)
|
# not needed).
|
||||||
AND NOT EMSCRIPTEN)
|
if(UNIX AND NOT (APPLE OR BEOS OR HAIKU OR EMSCRIPTEN))
|
||||||
find_library(M_LIBRARY m)
|
check_library_exists(m pow "" PNG_HAVE_LIBM_POW)
|
||||||
if(M_LIBRARY)
|
|
||||||
set(M_LIBRARY m)
|
|
||||||
else()
|
|
||||||
set(M_LIBRARY "")
|
|
||||||
endif()
|
endif()
|
||||||
else()
|
if(PNG_HAVE_LIBM_POW)
|
||||||
# libm is not available or not needed.
|
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()
|
endif()
|
||||||
|
|
||||||
if(PNG_HARDWARE_OPTIMIZATIONS)
|
if(PNG_HARDWARE_OPTIMIZATIONS)
|
||||||
@ -135,11 +163,13 @@ if(PNG_HARDWARE_OPTIMIZATIONS)
|
|||||||
if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)")
|
||||||
if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm64|aarch64)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm64|aarch64)")
|
||||||
set(PNG_ARM_NEON_POSSIBLE_VALUES on off)
|
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")
|
CACHE STRING "Enable ARM NEON optimizations: on|off; on is default")
|
||||||
else()
|
else()
|
||||||
set(PNG_ARM_NEON_POSSIBLE_VALUES check on off)
|
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")
|
CACHE STRING "Enable ARM NEON optimizations: check|on|off; off is default")
|
||||||
endif()
|
endif()
|
||||||
set_property(CACHE PNG_ARM_NEON
|
set_property(CACHE PNG_ARM_NEON
|
||||||
@ -165,7 +195,8 @@ if(PNG_HARDWARE_OPTIMIZATIONS)
|
|||||||
# Set definitions and sources for PowerPC.
|
# Set definitions and sources for PowerPC.
|
||||||
if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)")
|
||||||
set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off)
|
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")
|
CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default")
|
||||||
set_property(CACHE PNG_POWERPC_VSX
|
set_property(CACHE PNG_POWERPC_VSX
|
||||||
PROPERTY STRINGS ${PNG_POWERPC_VSX_POSSIBLE_VALUES})
|
PROPERTY STRINGS ${PNG_POWERPC_VSX_POSSIBLE_VALUES})
|
||||||
@ -187,7 +218,8 @@ if(PNG_HARDWARE_OPTIMIZATIONS)
|
|||||||
# Set definitions and sources for Intel.
|
# Set definitions and sources for Intel.
|
||||||
if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)")
|
||||||
set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
|
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")
|
CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default")
|
||||||
set_property(CACHE PNG_INTEL_SSE
|
set_property(CACHE PNG_INTEL_SSE
|
||||||
PROPERTY STRINGS ${PNG_INTEL_SSE_POSSIBLE_VALUES})
|
PROPERTY STRINGS ${PNG_INTEL_SSE_POSSIBLE_VALUES})
|
||||||
@ -209,7 +241,8 @@ if(PNG_HARDWARE_OPTIMIZATIONS)
|
|||||||
# Set definitions and sources for MIPS.
|
# Set definitions and sources for MIPS.
|
||||||
if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)")
|
||||||
set(PNG_MIPS_MSA_POSSIBLE_VALUES on off)
|
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")
|
CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default")
|
||||||
set_property(CACHE PNG_MIPS_MSA
|
set_property(CACHE PNG_MIPS_MSA
|
||||||
PROPERTY STRINGS ${PNG_MIPS_MSA_POSSIBLE_VALUES})
|
PROPERTY STRINGS ${PNG_MIPS_MSA_POSSIBLE_VALUES})
|
||||||
@ -219,7 +252,8 @@ if(PNG_HARDWARE_OPTIMIZATIONS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(PNG_MIPS_MMI_POSSIBLE_VALUES on off)
|
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")
|
CACHE STRING "Enable MIPS_MMI optimizations: on|off; on is default")
|
||||||
set_property(CACHE PNG_MIPS_MMI
|
set_property(CACHE PNG_MIPS_MMI
|
||||||
PROPERTY STRINGS ${PNG_MIPS_MMI_POSSIBLE_VALUES})
|
PROPERTY STRINGS ${PNG_MIPS_MMI_POSSIBLE_VALUES})
|
||||||
@ -257,7 +291,8 @@ if(PNG_HARDWARE_OPTIMIZATIONS)
|
|||||||
if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)")
|
||||||
include(CheckCCompilerFlag)
|
include(CheckCCompilerFlag)
|
||||||
set(PNG_LOONGARCH_LSX_POSSIBLE_VALUES on off)
|
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")
|
CACHE STRING "Enable LOONGARCH_LSX optimizations: on|off; on is default")
|
||||||
set_property(CACHE PNG_LOONGARCH_LSX
|
set_property(CACHE PNG_LOONGARCH_LSX
|
||||||
PROPERTY STRINGS ${PNG_LOONGARCH_LSX_POSSIBLE_VALUES})
|
PROPERTY STRINGS ${PNG_LOONGARCH_LSX_POSSIBLE_VALUES})
|
||||||
@ -265,23 +300,65 @@ if(PNG_HARDWARE_OPTIMIZATIONS)
|
|||||||
if(index EQUAL -1)
|
if(index EQUAL -1)
|
||||||
message(FATAL_ERROR "PNG_LOONGARCH_LSX must be one of [${PNG_LOONGARCH_LSX_POSSIBLE_VALUES}]")
|
message(FATAL_ERROR "PNG_LOONGARCH_LSX must be one of [${PNG_LOONGARCH_LSX_POSSIBLE_VALUES}]")
|
||||||
elseif(NOT PNG_LOONGARCH_LSX STREQUAL "off")
|
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)
|
if(COMPILER_SUPPORTS_LSX)
|
||||||
set(libpng_loongarch_sources
|
set(libpng_loongarch_sources
|
||||||
loongarch/loongarch_lsx_init.c
|
loongarch/loongarch_lsx_init.c
|
||||||
loongarch/filter_lsx_intrinsics.c)
|
loongarch/filter_lsx_intrinsics.c)
|
||||||
set_source_files_properties(${libpng_loongarch_sources}
|
set_source_files_properties(${libpng_loongarch_sources}
|
||||||
PROPERTIES
|
PROPERTIES COMPILE_FLAGS "-mlsx")
|
||||||
COMPILE_FLAGS "-mlsx")
|
|
||||||
add_definitions(-DPNG_LOONGARCH_LSX_OPT=1)
|
add_definitions(-DPNG_LOONGARCH_LSX_OPT=1)
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Compiler does not support -mlsx option")
|
message(FATAL_ERROR "This compiler does not support the -mlsx option")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
add_definitions(-DPNG_LOONGARCH_LSX_OPT=0)
|
add_definitions(-DPNG_LOONGARCH_LSX_OPT=0)
|
||||||
endif()
|
endif()
|
||||||
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 <riscv_vector.h>
|
||||||
|
#include <asm/hwcap.h>
|
||||||
|
#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)
|
else(PNG_HARDWARE_OPTIMIZATIONS)
|
||||||
|
|
||||||
# Set definitions and sources for ARM.
|
# Set definitions and sources for ARM.
|
||||||
@ -309,6 +386,11 @@ else(PNG_HARDWARE_OPTIMIZATIONS)
|
|||||||
add_definitions(-DPNG_LOONGARCH_LSX_OPT=0)
|
add_definitions(-DPNG_LOONGARCH_LSX_OPT=0)
|
||||||
endif()
|
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)
|
endif(PNG_HARDWARE_OPTIMIZATIONS)
|
||||||
|
|
||||||
option(ld-version-script "Enable linker version script" ON)
|
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.
|
# Solaris, because of an incompatibility with the Solaris link editor.
|
||||||
list(APPEND CMAKE_REQUIRED_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
|
list(APPEND CMAKE_REQUIRED_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
|
||||||
endif()
|
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("
|
check_c_source_compiles("
|
||||||
void sym1(void) {}
|
void sym1(void) {}
|
||||||
void sym2(void) {}
|
void sym2(void) {}
|
||||||
@ -348,6 +431,9 @@ int main(void) { return 0; }
|
|||||||
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
|
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
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.
|
# Find an AWK language processor.
|
||||||
# Start with specific AWK implementations like gawk and nawk, which are
|
# Start with specific AWK implementations like gawk and nawk, which are
|
||||||
# known to work with our scripts, then fall back to the system awk.
|
# known to work with our scripts, then fall back to the system awk.
|
||||||
@ -357,45 +443,60 @@ if(AWK)
|
|||||||
else()
|
else()
|
||||||
message(STATUS "Could not find an AWK-compatible program")
|
message(STATUS "Could not find an AWK-compatible program")
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT AWK OR (ANDROID OR IOS))
|
# Include the internal module PNGCheckLibconf.cmake
|
||||||
# No awk available to generate sources; use pre-built pnglibconf.h
|
include("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGCheckLibconf.cmake")
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h)
|
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)
|
add_custom_target(png_genfiles)
|
||||||
else()
|
else()
|
||||||
# Include the internal module PNGGenConfig.cmake
|
png_check_libconf(DFA_XTRA "${DFA_XTRA}")
|
||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGGenConfig.cmake)
|
|
||||||
|
|
||||||
# Copy the awk scripts, converting their line endings to Unix (LF)
|
# Include the internal module PNGGenConfig.cmake
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk
|
include("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGGenConfig.cmake")
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/scripts/checksym.awk
|
|
||||||
|
# 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
|
@ONLY
|
||||||
NEWLINE_STYLE LF)
|
NEWLINE_STYLE LF)
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk"
|
||||||
@ONLY
|
@ONLY
|
||||||
NEWLINE_STYLE LF)
|
NEWLINE_STYLE LF)
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/dfn.awk
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/dfn.awk"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/scripts/dfn.awk
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/dfn.awk"
|
||||||
@ONLY
|
@ONLY
|
||||||
NEWLINE_STYLE LF)
|
NEWLINE_STYLE LF)
|
||||||
|
|
||||||
# Generate scripts/pnglibconf.h
|
# 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"
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk"
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h")
|
"${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 pnglibconf.c
|
||||||
generate_source(OUTPUT "pnglibconf.c"
|
generate_source(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c"
|
||||||
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa"
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk"
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/options.awk"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h")
|
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h")
|
||||||
add_custom_target(pnglibconf_c
|
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c")
|
|
||||||
|
|
||||||
if(PNG_PREFIX)
|
if(PNG_PREFIX)
|
||||||
set(PNGLIBCONF_H_EXTRA_DEPENDS
|
set(PNGLIBCONF_H_EXTRA_DEPENDS
|
||||||
@ -406,80 +507,53 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
generate_out(INPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c"
|
generate_out(INPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c"
|
||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out")
|
||||||
DEPENDS pnglibconf_c)
|
|
||||||
add_custom_target(pnglibconf_out
|
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out")
|
|
||||||
|
|
||||||
# Generate pnglibconf.h
|
# Generate pnglibconf.h
|
||||||
generate_source(OUTPUT "pnglibconf.h"
|
generate_source(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h"
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" pnglibconf_out
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out"
|
||||||
${PNGLIBCONF_H_EXTRA_DEPENDS})
|
${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"
|
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/intprefix.c"
|
||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out"
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" pnglibconf_h)
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h")
|
||||||
add_custom_target(png_scripts_intprefix_out
|
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out")
|
|
||||||
|
|
||||||
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/prefix.c"
|
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/prefix.c"
|
||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out"
|
||||||
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
|
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" pnglibconf_out)
|
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out")
|
||||||
add_custom_target(png_scripts_prefix_out
|
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out")
|
|
||||||
|
|
||||||
# Generate pngprefix.h
|
# Generate pngprefix.h
|
||||||
generate_source(OUTPUT "pngprefix.h"
|
generate_source(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h"
|
||||||
DEPENDS ${PNGPREFIX_H_EXTRA_DEPENDS})
|
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"
|
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sym.c"
|
||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" pnglibconf_h)
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h")
|
||||||
add_custom_target(png_scripts_sym_out
|
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out")
|
|
||||||
|
|
||||||
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.c"
|
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.c"
|
||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
|
||||||
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
|
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt")
|
"${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"
|
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/vers.c"
|
||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out"
|
||||||
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
|
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" pnglibconf_h)
|
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h")
|
||||||
add_custom_target(png_scripts_vers_out
|
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out")
|
|
||||||
|
|
||||||
generate_chk(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
|
generate_chk(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
|
||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk"
|
||||||
DEPENDS png_scripts_symbols_out
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/checksym.awk"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/checksym.awk"
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.def")
|
"${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"
|
generate_copy(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
|
||||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym"
|
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)
|
|
||||||
|
|
||||||
add_custom_target(png_genvers
|
generate_copy(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out"
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers")
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers")
|
||||||
add_custom_target(png_gensym
|
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym")
|
|
||||||
|
|
||||||
add_custom_target(png_genprebuilt
|
add_custom_target(png_genprebuilt
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
@ -489,20 +563,20 @@ else()
|
|||||||
|
|
||||||
# A single target handles generation of all generated files.
|
# A single target handles generation of all generated files.
|
||||||
add_custom_target(png_genfiles
|
add_custom_target(png_genfiles
|
||||||
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym" png_gensym
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/libpng.vers" png_genvers
|
"${CMAKE_CURRENT_BINARY_DIR}/libpng.vers"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" pnglibconf_c
|
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" pnglibconf_h
|
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" pnglibconf_out
|
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h" pngprefix_h
|
"${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" png_scripts_intprefix_out
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c" png_scripts_pnglibconf_c
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" png_scripts_prefix_out
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" png_scripts_sym_out
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" png_scripts_symbols_chk
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" png_scripts_symbols_out
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" png_scripts_vers_out)
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out")
|
||||||
endif(NOT AWK OR (ANDROID OR IOS))
|
endif()
|
||||||
|
|
||||||
# List the source code files.
|
# List the source code files.
|
||||||
set(libpng_public_hdrs
|
set(libpng_public_hdrs
|
||||||
@ -516,7 +590,7 @@ set(libpng_private_hdrs
|
|||||||
pnginfo.h
|
pnginfo.h
|
||||||
pngstruct.h
|
pngstruct.h
|
||||||
)
|
)
|
||||||
if(AWK AND NOT (ANDROID OR IOS))
|
if(AWK)
|
||||||
list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h")
|
list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h")
|
||||||
endif()
|
endif()
|
||||||
set(libpng_sources
|
set(libpng_sources
|
||||||
@ -542,7 +616,9 @@ set(libpng_sources
|
|||||||
${libpng_mips_sources}
|
${libpng_mips_sources}
|
||||||
${libpng_powerpc_sources}
|
${libpng_powerpc_sources}
|
||||||
${libpng_loongarch_sources}
|
${libpng_loongarch_sources}
|
||||||
|
${libpng_riscv_sources}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(pngtest_sources
|
set(pngtest_sources
|
||||||
pngtest.c
|
pngtest.c
|
||||||
)
|
)
|
||||||
@ -565,15 +641,6 @@ set(png_fix_itxt_sources
|
|||||||
contrib/tools/png-fix-itxt.c
|
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.
|
# Now build our targets.
|
||||||
|
|
||||||
# Initialize the list of libpng library targets.
|
# Initialize the list of libpng library targets.
|
||||||
@ -601,55 +668,60 @@ if(PNG_SHARED)
|
|||||||
add_library(png_shared SHARED ${libpng_sources})
|
add_library(png_shared SHARED ${libpng_sources})
|
||||||
add_dependencies(png_shared png_genfiles)
|
add_dependencies(png_shared png_genfiles)
|
||||||
list(APPEND PNG_LIBRARY_TARGETS png_shared)
|
list(APPEND PNG_LIBRARY_TARGETS png_shared)
|
||||||
set_target_properties(png_shared PROPERTIES
|
set_target_properties(png_shared
|
||||||
OUTPUT_NAME "${PNG_SHARED_OUTPUT_NAME}"
|
PROPERTIES OUTPUT_NAME "${PNG_SHARED_OUTPUT_NAME}"
|
||||||
DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}"
|
DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}"
|
||||||
VERSION "${PNGLIB_SHARED_VERSION}"
|
VERSION "${PNGLIB_SHARED_VERSION}"
|
||||||
SOVERSION "${PNGLIB_ABI_VERSION}")
|
SOVERSION "${PNGLIB_ABI_VERSION}")
|
||||||
if(UNIX AND AWK)
|
if(UNIX AND AWK)
|
||||||
if(HAVE_LD_VERSION_SCRIPT)
|
if(HAVE_LD_VERSION_SCRIPT)
|
||||||
set_target_properties(png_shared PROPERTIES
|
set_target_properties(png_shared
|
||||||
LINK_FLAGS "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'")
|
PROPERTIES LINK_FLAGS "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'")
|
||||||
elseif(HAVE_SOLARIS_LD_VERSION_SCRIPT)
|
elseif(HAVE_SOLARIS_LD_VERSION_SCRIPT)
|
||||||
set_target_properties(png_shared PROPERTIES
|
set_target_properties(png_shared
|
||||||
LINK_FLAGS "-Wl,-M -Wl,'${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'")
|
PROPERTIES LINK_FLAGS "-Wl,-M -Wl,'${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
# Avoid CMake's implicit compile definition "png_shared_EXPORTS".
|
# 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)
|
elseif(WIN32)
|
||||||
# Use the explicit compile definition "PNG_BUILD_DLL" for Windows DLLs.
|
# 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()
|
endif()
|
||||||
target_include_directories(png_shared
|
target_include_directories(png_shared
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
|
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
|
||||||
target_include_directories(png_shared
|
target_include_directories(png_shared
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
|
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>")
|
||||||
target_include_directories(png_shared SYSTEM
|
target_include_directories(png_shared
|
||||||
INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>)
|
SYSTEM
|
||||||
target_link_libraries(png_shared PUBLIC ZLIB::ZLIB ${M_LIBRARY})
|
INTERFACE "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>")
|
||||||
|
target_link_libraries(png_shared
|
||||||
|
PUBLIC ${PNG_LINK_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PNG_STATIC)
|
if(PNG_STATIC)
|
||||||
add_library(png_static STATIC ${libpng_sources})
|
add_library(png_static STATIC ${libpng_sources})
|
||||||
add_dependencies(png_static png_genfiles)
|
add_dependencies(png_static png_genfiles)
|
||||||
list(APPEND PNG_LIBRARY_TARGETS png_static)
|
list(APPEND PNG_LIBRARY_TARGETS png_static)
|
||||||
set_target_properties(png_static PROPERTIES
|
set_target_properties(png_static
|
||||||
OUTPUT_NAME "${PNG_STATIC_OUTPUT_NAME}"
|
PROPERTIES OUTPUT_NAME "${PNG_STATIC_OUTPUT_NAME}"
|
||||||
DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}")
|
DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}")
|
||||||
target_include_directories(png_static
|
target_include_directories(png_static
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
|
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
|
||||||
target_include_directories(png_static
|
target_include_directories(png_static
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
|
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>")
|
||||||
target_include_directories(png_static SYSTEM
|
target_include_directories(png_static
|
||||||
INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>)
|
SYSTEM
|
||||||
target_link_libraries(png_static PUBLIC ZLIB::ZLIB ${M_LIBRARY})
|
INTERFACE "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>")
|
||||||
|
target_link_libraries(png_static
|
||||||
|
PUBLIC ${PNG_LINK_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PNG_FRAMEWORK AND NOT APPLE)
|
if(PNG_FRAMEWORK AND NOT APPLE)
|
||||||
message(AUTHOR_WARNING
|
message(AUTHOR_WARNING "Setting PNG_FRAMEWORK to OFF, as it only applies to Apple systems")
|
||||||
"Setting PNG_FRAMEWORK to OFF, as it only applies to Apple systems")
|
|
||||||
set(PNG_FRAMEWORK OFF)
|
set(PNG_FRAMEWORK OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -657,8 +729,8 @@ if(PNG_FRAMEWORK)
|
|||||||
add_library(png_framework SHARED ${libpng_sources})
|
add_library(png_framework SHARED ${libpng_sources})
|
||||||
add_dependencies(png_framework png_genfiles)
|
add_dependencies(png_framework png_genfiles)
|
||||||
list(APPEND PNG_LIBRARY_TARGETS png_framework)
|
list(APPEND PNG_LIBRARY_TARGETS png_framework)
|
||||||
set_target_properties(png_framework PROPERTIES
|
set_target_properties(png_framework
|
||||||
FRAMEWORK TRUE
|
PROPERTIES FRAMEWORK TRUE
|
||||||
FRAMEWORK_VERSION "${PNGLIB_VERSION}"
|
FRAMEWORK_VERSION "${PNGLIB_VERSION}"
|
||||||
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${PNGLIB_MAJOR}.${PNGLIB_MINOR}"
|
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${PNGLIB_MAJOR}.${PNGLIB_MINOR}"
|
||||||
MACOSX_FRAMEWORK_BUNDLE_VERSION "${PNGLIB_VERSION}"
|
MACOSX_FRAMEWORK_BUNDLE_VERSION "${PNGLIB_VERSION}"
|
||||||
@ -668,14 +740,17 @@ if(PNG_FRAMEWORK)
|
|||||||
OUTPUT_NAME "png"
|
OUTPUT_NAME "png"
|
||||||
DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}")
|
DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}")
|
||||||
# Avoid CMake's implicit compile definition "-Dpng_framework_EXPORTS".
|
# 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
|
target_include_directories(png_framework
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
|
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
|
||||||
target_include_directories(png_framework
|
target_include_directories(png_framework
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
|
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>")
|
||||||
target_include_directories(png_framework SYSTEM
|
target_include_directories(png_framework
|
||||||
INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>)
|
SYSTEM
|
||||||
target_link_libraries(png_framework PUBLIC ZLIB::ZLIB ${M_LIBRARY})
|
INTERFACE "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>")
|
||||||
|
target_link_libraries(png_framework
|
||||||
|
PUBLIC ${PNG_LINK_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT PNG_LIBRARY_TARGETS)
|
if(NOT PNG_LIBRARY_TARGETS)
|
||||||
@ -688,7 +763,7 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
||||||
# Include the internal module PNGTest.cmake
|
# 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
|
# Find test PNG files by globbing, but sort lists to ensure
|
||||||
# consistency between different filesystems.
|
# consistency between different filesystems.
|
||||||
@ -702,7 +777,8 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png")
|
set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png")
|
||||||
|
|
||||||
add_executable(pngtest ${pngtest_sources})
|
add_executable(pngtest ${pngtest_sources})
|
||||||
target_link_libraries(pngtest PRIVATE png_shared)
|
target_link_libraries(pngtest
|
||||||
|
PRIVATE png_shared)
|
||||||
|
|
||||||
png_add_test(NAME pngtest
|
png_add_test(NAME pngtest
|
||||||
COMMAND pngtest
|
COMMAND pngtest
|
||||||
@ -713,7 +789,8 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
FILES "${TEST_PNG3_PNGS}")
|
FILES "${TEST_PNG3_PNGS}")
|
||||||
|
|
||||||
add_executable(pngvalid ${pngvalid_sources})
|
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
|
png_add_test(NAME pngvalid-gamma-16-to-8
|
||||||
COMMAND pngvalid
|
COMMAND pngvalid
|
||||||
@ -759,7 +836,8 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
OPTIONS --transform)
|
OPTIONS --transform)
|
||||||
|
|
||||||
add_executable(pngstest ${pngstest_sources})
|
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(gamma_type 1.8 linear none sRGB)
|
||||||
foreach(alpha_type none alpha)
|
foreach(alpha_type none alpha)
|
||||||
@ -814,7 +892,8 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_executable(pngunknown ${pngunknown_sources})
|
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
|
png_add_test(NAME pngunknown-discard
|
||||||
COMMAND pngunknown
|
COMMAND pngunknown
|
||||||
@ -830,7 +909,8 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
FILES "${PNGTEST_PNG}")
|
FILES "${PNGTEST_PNG}")
|
||||||
png_add_test(NAME pngunknown-sAPI
|
png_add_test(NAME pngunknown-sAPI
|
||||||
COMMAND pngunknown
|
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}")
|
FILES "${PNGTEST_PNG}")
|
||||||
png_add_test(NAME pngunknown-save
|
png_add_test(NAME pngunknown-save
|
||||||
COMMAND pngunknown
|
COMMAND pngunknown
|
||||||
@ -846,7 +926,8 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
FILES "${PNGTEST_PNG}")
|
FILES "${PNGTEST_PNG}")
|
||||||
|
|
||||||
add_executable(pngimage ${pngimage_sources})
|
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
|
png_add_test(NAME pngimage-quick
|
||||||
COMMAND pngimage
|
COMMAND pngimage
|
||||||
@ -860,11 +941,13 @@ endif()
|
|||||||
|
|
||||||
if(PNG_SHARED AND PNG_TOOLS)
|
if(PNG_SHARED AND PNG_TOOLS)
|
||||||
add_executable(pngfix ${pngfix_sources})
|
add_executable(pngfix ${pngfix_sources})
|
||||||
target_link_libraries(pngfix PRIVATE png_shared)
|
target_link_libraries(pngfix
|
||||||
|
PRIVATE png_shared)
|
||||||
set(PNG_BIN_TARGETS pngfix)
|
set(PNG_BIN_TARGETS pngfix)
|
||||||
|
|
||||||
add_executable(png-fix-itxt ${png_fix_itxt_sources})
|
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)
|
list(APPEND PNG_BIN_TARGETS png-fix-itxt)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -878,12 +961,11 @@ function(create_symlink DEST_FILE)
|
|||||||
# CMake version 3.13.
|
# CMake version 3.13.
|
||||||
cmake_parse_arguments(_SYM "" "FILE;TARGET" "" ${ARGN})
|
cmake_parse_arguments(_SYM "" "FILE;TARGET" "" ${ARGN})
|
||||||
if(NOT _SYM_FILE AND NOT _SYM_TARGET)
|
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()
|
endif()
|
||||||
if(_SYM_FILE AND _SYM_TARGET)
|
if(_SYM_FILE AND _SYM_TARGET)
|
||||||
message(FATAL_ERROR "create_symlink: "
|
message(FATAL_ERROR "create_symlink: Mutually-exlusive arguments:"
|
||||||
"The arguments FILE (${_SYM_FILE}) and TARGET (${_SYM_TARGET}) "
|
"FILE (${_SYM_FILE}) and TARGET (${_SYM_TARGET})")
|
||||||
"are mutually-exclusive")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(_SYM_FILE)
|
if(_SYM_FILE)
|
||||||
@ -892,12 +974,14 @@ function(create_symlink DEST_FILE)
|
|||||||
if(CMAKE_HOST_WIN32 AND NOT CYGWIN)
|
if(CMAKE_HOST_WIN32 AND NOT CYGWIN)
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}"
|
execute_process(COMMAND "${CMAKE_COMMAND}"
|
||||||
-E copy_if_different
|
-E copy_if_different
|
||||||
${_SYM_FILE} ${DEST_FILE}
|
"${_SYM_FILE}"
|
||||||
|
"${DEST_FILE}"
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
else()
|
else()
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}"
|
execute_process(COMMAND "${CMAKE_COMMAND}"
|
||||||
-E create_symlink
|
-E create_symlink
|
||||||
${_SYM_FILE} ${DEST_FILE}
|
"${_SYM_FILE}"
|
||||||
|
"${DEST_FILE}"
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -911,28 +995,28 @@ function(create_symlink DEST_FILE)
|
|||||||
POST_BUILD
|
POST_BUILD
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
-E copy_if_different
|
-E copy_if_different
|
||||||
$<TARGET_LINKER_FILE_DIR:${_SYM_TARGET}>/$<TARGET_LINKER_FILE_NAME:${_SYM_TARGET}>
|
"$<TARGET_LINKER_FILE_DIR:${_SYM_TARGET}>/$<TARGET_LINKER_FILE_NAME:${_SYM_TARGET}>"
|
||||||
$<TARGET_LINKER_FILE_DIR:${_SYM_TARGET}>/${DEST_FILE})
|
"$<TARGET_LINKER_FILE_DIR:${_SYM_TARGET}>/${DEST_FILE}")
|
||||||
else()
|
else()
|
||||||
add_custom_command(TARGET ${_SYM_TARGET}
|
add_custom_command(TARGET ${_SYM_TARGET}
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
-E create_symlink
|
-E create_symlink
|
||||||
$<TARGET_LINKER_FILE_NAME:${_SYM_TARGET}>
|
"$<TARGET_LINKER_FILE_NAME:${_SYM_TARGET}>"
|
||||||
$<TARGET_LINKER_FILE_DIR:${_SYM_TARGET}>/${DEST_FILE})
|
"$<TARGET_LINKER_FILE_DIR:${_SYM_TARGET}>/${DEST_FILE}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Create source generation scripts.
|
# Create source generation scripts.
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/genchk.cmake.in
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/genchk.cmake.in"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genchk.cmake
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genchk.cmake"
|
||||||
@ONLY)
|
@ONLY)
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/genout.cmake.in
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/genout.cmake.in"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genout.cmake
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genout.cmake"
|
||||||
@ONLY)
|
@ONLY)
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/gensrc.cmake.in
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/gensrc.cmake.in"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/gensrc.cmake
|
"${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/gensrc.cmake"
|
||||||
@ONLY)
|
@ONLY)
|
||||||
|
|
||||||
# libpng is a library so default to 'lib'
|
# 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
|
# Only do this on Windows for Cygwin - the files don't make much sense
|
||||||
# outside of a UNIX look-alike.
|
# outside of a UNIX look-alike.
|
||||||
if(NOT WIN32 OR CYGWIN OR MINGW)
|
if(NOT WIN32 OR CYGWIN OR MINGW)
|
||||||
set(prefix ${CMAKE_INSTALL_PREFIX})
|
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||||
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
|
set(exec_prefix "${CMAKE_INSTALL_PREFIX}")
|
||||||
set(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
|
set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
|
||||||
set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR})
|
set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
|
||||||
set(LIBS "-lz -lm")
|
set(LIBS "-lz -lm")
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}.pc
|
"${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}.pc"
|
||||||
@ONLY)
|
@ONLY)
|
||||||
create_symlink(libpng.pc FILE libpng${PNGLIB_ABI_VERSION}.pc)
|
create_symlink(libpng.pc FILE libpng${PNGLIB_ABI_VERSION}.pc)
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config
|
"${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config"
|
||||||
@ONLY)
|
@ONLY)
|
||||||
create_symlink(libpng-config FILE libpng${PNGLIB_ABI_VERSION}-config)
|
create_symlink(libpng-config FILE libpng${PNGLIB_ABI_VERSION}-config)
|
||||||
endif()
|
endif()
|
||||||
@ -964,72 +1048,72 @@ endif()
|
|||||||
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
|
||||||
install(TARGETS ${PNG_LIBRARY_TARGETS}
|
install(TARGETS ${PNG_LIBRARY_TARGETS}
|
||||||
EXPORT libpng
|
EXPORT libpng
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||||
|
|
||||||
if(PNG_SHARED)
|
if(PNG_SHARED)
|
||||||
# Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin
|
# Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin
|
||||||
if(NOT WIN32 OR CYGWIN OR MINGW)
|
if(NOT WIN32 OR CYGWIN OR MINGW)
|
||||||
create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png_shared)
|
create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png_shared)
|
||||||
install(FILES $<TARGET_LINKER_FILE_DIR:png_shared>/libpng${CMAKE_SHARED_LIBRARY_SUFFIX}
|
install(FILES "$<TARGET_LINKER_FILE_DIR:png_shared>/libpng${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PNG_STATIC)
|
if(PNG_STATIC)
|
||||||
if(NOT WIN32 OR CYGWIN OR MINGW)
|
if(NOT WIN32 OR CYGWIN OR MINGW)
|
||||||
create_symlink(libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static)
|
create_symlink(libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static)
|
||||||
install(FILES $<TARGET_LINKER_FILE_DIR:png_static>/libpng${CMAKE_STATIC_LIBRARY_SUFFIX}
|
install(FILES "$<TARGET_LINKER_FILE_DIR:png_static>/libpng${CMAKE_STATIC_LIBRARY_SUFFIX}"
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
|
||||||
install(FILES ${libpng_public_hdrs}
|
install(FILES ${libpng_public_hdrs}
|
||||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
install(FILES ${libpng_public_hdrs}
|
install(FILES ${libpng_public_hdrs}
|
||||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION})
|
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}")
|
||||||
endif()
|
endif()
|
||||||
if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL)
|
||||||
if(NOT WIN32 OR CYGWIN OR MINGW)
|
if(NOT WIN32 OR CYGWIN OR MINGW)
|
||||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config
|
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/libpng-config"
|
||||||
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config
|
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config"
|
||||||
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL)
|
||||||
install(TARGETS ${PNG_BIN_TARGETS}
|
install(TARGETS ${PNG_BIN_TARGETS}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL)
|
||||||
# Install the man pages.
|
# Install the man pages.
|
||||||
install(FILES libpng.3 libpngpf.3
|
install(FILES libpng.3 libpngpf.3
|
||||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man3)
|
DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
|
||||||
install(FILES png.5
|
install(FILES png.5
|
||||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man5)
|
DESTINATION "${CMAKE_INSTALL_MANDIR}/man5")
|
||||||
# Install the pkg-config files.
|
# Install the pkg-config files.
|
||||||
if(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW)
|
if(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW)
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libpng.pc"
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config
|
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/libpng-config"
|
||||||
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}.pc
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}.pc"
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config
|
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config"
|
||||||
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Create an export file that CMake users can include() to import our targets.
|
# Create an export file that CMake users can include() to import our targets.
|
||||||
if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL)
|
||||||
install(EXPORT libpng
|
install(EXPORT libpng
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/libpng
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/libpng"
|
||||||
FILE libpng${PNGLIB_ABI_VERSION}.cmake)
|
FILE libpng${PNGLIB_ABI_VERSION}.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -1037,10 +1121,10 @@ endif()
|
|||||||
if(NOT SKIP_INSTALL_CONFIG_FILE AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_CONFIG_FILE AND NOT SKIP_INSTALL_ALL)
|
||||||
install(TARGETS ${PNG_LIBRARY_TARGETS}
|
install(TARGETS ${PNG_LIBRARY_TARGETS}
|
||||||
EXPORT PNGTargets
|
EXPORT PNGTargets
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||||
|
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
write_basic_package_version_file(PNGConfigVersion.cmake
|
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
|
install(EXPORT PNGTargets
|
||||||
FILE PNGTargets.cmake
|
FILE PNGTargets.cmake
|
||||||
NAMESPACE PNG::
|
NAMESPACE PNG::
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG)
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/PNG")
|
||||||
|
|
||||||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGConfig.cmake
|
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGConfig.cmake"
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PNGConfigVersion.cmake
|
"${CMAKE_CURRENT_BINARY_DIR}/PNGConfigVersion.cmake"
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG)
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/PNG")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# TODO: Create MSVC import lib for MinGW-compiled shared lib.
|
# TODO: Create MSVC import lib for MinGW-compiled shared lib.
|
||||||
|
10
INSTALL
10
INSTALL
@ -136,7 +136,7 @@ Your directory structure should look like this:
|
|||||||
depcomp, install-sh, mkinstalldirs, test-pngtest.sh, etc.
|
depcomp, install-sh, mkinstalldirs, test-pngtest.sh, etc.
|
||||||
contrib
|
contrib
|
||||||
arm-neon, conftest, examples, gregbook, libtests, pngminim,
|
arm-neon, conftest, examples, gregbook, libtests, pngminim,
|
||||||
pngminus, pngsuite, tools, visupng
|
pngminus, pngsuite, tools, visupng, riscv-rvv
|
||||||
projects
|
projects
|
||||||
owatcom, visualc71, vstudio
|
owatcom, visualc71, vstudio
|
||||||
scripts
|
scripts
|
||||||
@ -289,6 +289,7 @@ such as one of
|
|||||||
--enable-mips-msa=yes
|
--enable-mips-msa=yes
|
||||||
--enable-intel-sse=yes
|
--enable-intel-sse=yes
|
||||||
--enable-powerpc-vsx=yes
|
--enable-powerpc-vsx=yes
|
||||||
|
--enable-riscv-rvv=yes
|
||||||
|
|
||||||
or enable them all at once with
|
or enable them all at once with
|
||||||
|
|
||||||
@ -301,6 +302,7 @@ or more of
|
|||||||
CPPFLAGS += "-DPNG_MIPS_MSA"
|
CPPFLAGS += "-DPNG_MIPS_MSA"
|
||||||
CPPFLAGS += "-DPNG_INTEL_SSE"
|
CPPFLAGS += "-DPNG_INTEL_SSE"
|
||||||
CPPFLAGS += "-DPNG_POWERPC_VSX"
|
CPPFLAGS += "-DPNG_POWERPC_VSX"
|
||||||
|
CPPFLAGS += "-DPNG_RISCV_RVV"
|
||||||
|
|
||||||
See for example scripts/makefile.linux-opt
|
See for example scripts/makefile.linux-opt
|
||||||
|
|
||||||
@ -317,13 +319,15 @@ to disable a particular one,
|
|||||||
or via compiler-command options such as
|
or via compiler-command options such as
|
||||||
|
|
||||||
CPPFLAGS += "-DPNG_ARM_NEON_OPT=0, -DPNG_MIPS_MSA_OPT=0,
|
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"
|
If you are using cmake, hardware optimizations are "on"
|
||||||
by default. To disable them, use
|
by default. To disable them, use
|
||||||
|
|
||||||
cmake . -DPNG_ARM_NEON=no -DPNG_INTEL_SSE=no \
|
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
|
or disable them all at once with
|
||||||
|
|
||||||
|
13
Makefile.am
13
Makefile.am
@ -134,13 +134,20 @@ libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES += powerpc/powerpc_init.c\
|
|||||||
powerpc/filter_vsx_intrinsics.c
|
powerpc/filter_vsx_intrinsics.c
|
||||||
endif
|
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
|
if PNG_LOONGARCH_LSX
|
||||||
noinst_LTLIBRARIES= libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
|
noinst_LTLIBRARIES= libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
|
||||||
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_SOURCES = loongarch/loongarch_lsx_init.c\
|
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_SOURCES = loongarch/loongarch_lsx_init.c\
|
||||||
loongarch/filter_lsx_intrinsics.c
|
loongarch/filter_lsx_intrinsics.c
|
||||||
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_CFLAGS = -mlsx
|
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_LIBADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
|
||||||
# libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
nodist_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = pnglibconf.h
|
nodist_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = pnglibconf.h
|
||||||
@ -163,6 +170,10 @@ else
|
|||||||
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng.sym
|
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng.sym
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if PNG_RISCV_RVV
|
||||||
|
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES += libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv.la
|
||||||
|
endif
|
||||||
|
|
||||||
if PNG_LOONGARCH_LSX
|
if PNG_LOONGARCH_LSX
|
||||||
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES += libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
|
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES += libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
|
||||||
endif
|
endif
|
||||||
|
107
Makefile.in
107
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@
|
# @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
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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
|
@HAVE_LD_VERSION_SCRIPT_TRUE@@HAVE_SOLARIS_LD_FALSE@am__append_9 = -Wl,--version-script=libpng.vers
|
||||||
# Only restricted exports when possible
|
# Only restricted exports when possible
|
||||||
@HAVE_LD_VERSION_SCRIPT_FALSE@am__append_10 = -export-symbols libpng.sym
|
@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
|
@PNG_RISCV_RVV_TRUE@am__append_11 = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv.la
|
||||||
@DO_PNG_PREFIX_TRUE@am__append_12 = -DPNG_PREFIX='@PNG_PREFIX@'
|
@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 = .
|
subdir = .
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/scripts/autoconf/libtool.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) \
|
$(CCLD) $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_CFLAGS) \
|
||||||
$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
@PNG_LOONGARCH_LSX_TRUE@am_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx_la_rpath =
|
@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
|
am__png_fix_itxt_SOURCES_DIST = contrib/tools/png-fix-itxt.c
|
||||||
@ENABLE_TOOLS_TRUE@am_png_fix_itxt_OBJECTS = \
|
@ENABLE_TOOLS_TRUE@am_png_fix_itxt_OBJECTS = \
|
||||||
@ENABLE_TOOLS_TRUE@ contrib/tools/png-fix-itxt.$(OBJEXT)
|
@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)/filter_msa_intrinsics.Plo \
|
||||||
mips/$(DEPDIR)/mips_init.Plo \
|
mips/$(DEPDIR)/mips_init.Plo \
|
||||||
powerpc/$(DEPDIR)/filter_vsx_intrinsics.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
|
am__mv = mv -f
|
||||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
@ -355,12 +370,14 @@ am__v_CCLD_1 =
|
|||||||
SOURCES = $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES) \
|
SOURCES = $(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES) \
|
||||||
$(nodist_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@lsx_la_SOURCES) \
|
||||||
|
$(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@rvv_la_SOURCES) \
|
||||||
$(png_fix_itxt_SOURCES) $(pngcp_SOURCES) $(pngfix_SOURCES) \
|
$(png_fix_itxt_SOURCES) $(pngcp_SOURCES) $(pngfix_SOURCES) \
|
||||||
$(pngimage_SOURCES) $(pngstest_SOURCES) $(pngtest_SOURCES) \
|
$(pngimage_SOURCES) $(pngstest_SOURCES) $(pngtest_SOURCES) \
|
||||||
$(pngunknown_SOURCES) $(pngvalid_SOURCES) $(timepng_SOURCES)
|
$(pngunknown_SOURCES) $(pngvalid_SOURCES) $(timepng_SOURCES)
|
||||||
DIST_SOURCES = \
|
DIST_SOURCES = \
|
||||||
$(am__libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES_DIST) \
|
$(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@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__png_fix_itxt_SOURCES_DIST) $(am__pngcp_SOURCES_DIST) \
|
||||||
$(am__pngfix_SOURCES_DIST) $(am__pngimage_SOURCES_DIST) \
|
$(am__pngfix_SOURCES_DIST) $(am__pngimage_SOURCES_DIST) \
|
||||||
$(am__pngstest_SOURCES_DIST) $(am__pngtest_SOURCES_DIST) \
|
$(am__pngstest_SOURCES_DIST) $(am__pngtest_SOURCES_DIST) \
|
||||||
@ -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_4) $(am__append_5) $(am__append_6) \
|
||||||
$(am__append_7)
|
$(am__append_7)
|
||||||
@PNG_LOONGARCH_LSX_TRUE@noinst_LTLIBRARIES = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@lsx.la
|
@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@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@ 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@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
|
nodist_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = pnglibconf.h
|
||||||
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS = -no-undefined \
|
libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS = -no-undefined \
|
||||||
-export-dynamic -version-number \
|
-export-dynamic -version-number \
|
||||||
@PNGLIB_MAJOR@@PNGLIB_MINOR@:@PNGLIB_RELEASE@:0 \
|
@PNGLIB_MAJOR@@PNGLIB_MINOR@:@PNGLIB_RELEASE@:0 \
|
||||||
$(am__append_8) $(am__append_9) $(am__append_10)
|
$(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@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@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
|
pkginclude_HEADERS = png.h pngconf.h
|
||||||
nodist_pkginclude_HEADERS = pnglibconf.h
|
nodist_pkginclude_HEADERS = pnglibconf.h
|
||||||
pkgconfig_DATA = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc
|
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' \
|
SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0' \
|
||||||
-DPNGLIB_VERSION='@PNGLIB_VERSION@' \
|
-DPNGLIB_VERSION='@PNGLIB_VERSION@' \
|
||||||
-DSYMBOL_PREFIX='$(SYMBOL_PREFIX)' -DPNG_NO_USE_READ_MACROS \
|
-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
|
# 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
|
# 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)
|
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)
|
$(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):
|
contrib/tools/$(am__dirstamp):
|
||||||
@$(MKDIR_P) contrib/tools
|
@$(MKDIR_P) contrib/tools
|
||||||
@: >>contrib/tools/$(am__dirstamp)
|
@: >>contrib/tools/$(am__dirstamp)
|
||||||
@ -1202,6 +1239,8 @@ mostlyclean-compile:
|
|||||||
-rm -f mips/*.lo
|
-rm -f mips/*.lo
|
||||||
-rm -f powerpc/*.$(OBJEXT)
|
-rm -f powerpc/*.$(OBJEXT)
|
||||||
-rm -f powerpc/*.lo
|
-rm -f powerpc/*.lo
|
||||||
|
-rm -f riscv/*.$(OBJEXT)
|
||||||
|
-rm -f riscv/*.lo
|
||||||
|
|
||||||
distclean-compile:
|
distclean-compile:
|
||||||
-rm -f *.tab.c
|
-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@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)/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@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):
|
$(am__depfiles_remade):
|
||||||
@$(MKDIR_P) $(@D)
|
@$(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@
|
@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
|
@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:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
|
|
||||||
@ -1297,6 +1352,7 @@ clean-libtool:
|
|||||||
-rm -rf loongarch/.libs loongarch/_libs
|
-rm -rf loongarch/.libs loongarch/_libs
|
||||||
-rm -rf mips/.libs mips/_libs
|
-rm -rf mips/.libs mips/_libs
|
||||||
-rm -rf powerpc/.libs powerpc/_libs
|
-rm -rf powerpc/.libs powerpc/_libs
|
||||||
|
-rm -rf riscv/.libs riscv/_libs
|
||||||
|
|
||||||
distclean-libtool:
|
distclean-libtool:
|
||||||
-rm -f libtool config.lt
|
-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@ --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@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
|
||||||
@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
|
@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||||
|
|
||||||
distdir: $(BUILT_SOURCES)
|
distdir: $(BUILT_SOURCES)
|
||||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||||
|
|
||||||
@ -1966,6 +2023,10 @@ dist-bzip2: distdir
|
|||||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||||
$(am__post_remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-bzip3: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | bzip3 -c >$(distdir).tar.bz3
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-lzip: distdir
|
dist-lzip: distdir
|
||||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||||
$(am__post_remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
@ -2009,6 +2070,8 @@ distcheck: dist
|
|||||||
eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
*.tar.bz2*) \
|
*.tar.bz2*) \
|
||||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
|
*.tar.bz3*) \
|
||||||
|
bzip3 -dc $(distdir).tar.bz3 | $(am__untar) ;;\
|
||||||
*.tar.lz*) \
|
*.tar.lz*) \
|
||||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||||
*.tar.xz*) \
|
*.tar.xz*) \
|
||||||
@ -2148,6 +2211,8 @@ distclean-generic:
|
|||||||
-$(am__rm_f) mips/$(am__dirstamp)
|
-$(am__rm_f) mips/$(am__dirstamp)
|
||||||
-$(am__rm_f) powerpc/$(DEPDIR)/$(am__dirstamp)
|
-$(am__rm_f) powerpc/$(DEPDIR)/$(am__dirstamp)
|
||||||
-$(am__rm_f) powerpc/$(am__dirstamp)
|
-$(am__rm_f) powerpc/$(am__dirstamp)
|
||||||
|
-$(am__rm_f) riscv/$(DEPDIR)/$(am__dirstamp)
|
||||||
|
-$(am__rm_f) riscv/$(am__dirstamp)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@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 mips/$(DEPDIR)/mips_init.Plo
|
||||||
-rm -f powerpc/$(DEPDIR)/filter_vsx_intrinsics.Plo
|
-rm -f powerpc/$(DEPDIR)/filter_vsx_intrinsics.Plo
|
||||||
-rm -f powerpc/$(DEPDIR)/powerpc_init.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
|
-rm -f Makefile
|
||||||
distclean-am: clean-am distclean-compile distclean-generic \
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
distclean-hdr distclean-libtool distclean-tags
|
distclean-hdr distclean-libtool distclean-tags
|
||||||
@ -2288,6 +2355,8 @@ maintainer-clean: maintainer-clean-am
|
|||||||
-rm -f mips/$(DEPDIR)/mips_init.Plo
|
-rm -f mips/$(DEPDIR)/mips_init.Plo
|
||||||
-rm -f powerpc/$(DEPDIR)/filter_vsx_intrinsics.Plo
|
-rm -f powerpc/$(DEPDIR)/filter_vsx_intrinsics.Plo
|
||||||
-rm -f powerpc/$(DEPDIR)/powerpc_init.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
|
-rm -f Makefile
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
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-checkPROGRAMS clean-cscope clean-generic \
|
||||||
clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
|
clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
|
||||||
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
|
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
|
||||||
dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
|
dist-bzip3 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \
|
||||||
dist-zip dist-zstd distcheck distclean distclean-compile \
|
dist-xz dist-zip dist-zstd distcheck distclean \
|
||||||
distclean-generic distclean-hdr distclean-libtool \
|
distclean-compile distclean-generic distclean-hdr \
|
||||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
distclean-libtool distclean-tags distcleancheck distdir \
|
||||||
dvi-am html html-am info info-am install install-am \
|
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||||
install-binPROGRAMS install-binSCRIPTS install-data \
|
install install-am install-binPROGRAMS install-binSCRIPTS \
|
||||||
install-data-am install-data-hook install-dvi install-dvi-am \
|
install-data install-data-am install-data-hook install-dvi \
|
||||||
install-exec install-exec-am install-exec-hook install-html \
|
install-dvi-am install-exec install-exec-am install-exec-hook \
|
||||||
install-html-am install-info install-info-am \
|
install-html install-html-am install-info install-info-am \
|
||||||
install-libLTLIBRARIES install-man install-man3 install-man5 \
|
install-libLTLIBRARIES install-man install-man3 install-man5 \
|
||||||
install-nodist_pkgincludeHEADERS install-pdf install-pdf-am \
|
install-nodist_pkgincludeHEADERS install-pdf install-pdf-am \
|
||||||
install-pkgconfigDATA install-pkgincludeHEADERS install-ps \
|
install-pkgconfigDATA install-pkgincludeHEADERS install-ps \
|
||||||
|
6
README
6
README
@ -1,5 +1,5 @@
|
|||||||
README for libpng version 1.6.47
|
README for libpng version 1.6.51.git
|
||||||
================================
|
====================================
|
||||||
|
|
||||||
See the note about version numbers near the top of `png.h`.
|
See the note about version numbers near the top of `png.h`.
|
||||||
See `INSTALL` for instructions on how to install libpng.
|
See `INSTALL` for instructions on how to install libpng.
|
||||||
@ -147,6 +147,7 @@ Files included in this distribution
|
|||||||
loongarch/ => Optimized code for LoongArch LSX
|
loongarch/ => Optimized code for LoongArch LSX
|
||||||
mips/ => Optimized code for MIPS MSA and MIPS MMI
|
mips/ => Optimized code for MIPS MSA and MIPS MMI
|
||||||
powerpc/ => Optimized code for PowerPC VSX
|
powerpc/ => Optimized code for PowerPC VSX
|
||||||
|
riscv/ => Optimized code for the RISC-V platform
|
||||||
ci/ => Scripts for continuous integration
|
ci/ => Scripts for continuous integration
|
||||||
contrib/ => External contributions
|
contrib/ => External contributions
|
||||||
arm-neon/ => Optimized code for the ARM-NEON platform
|
arm-neon/ => Optimized code for the ARM-NEON platform
|
||||||
@ -162,6 +163,7 @@ Files included in this distribution
|
|||||||
programs demonstrating the use of pngusr.dfa
|
programs demonstrating the use of pngusr.dfa
|
||||||
pngminus/ => Simple pnm2png and png2pnm programs
|
pngminus/ => Simple pnm2png and png2pnm programs
|
||||||
pngsuite/ => Test images
|
pngsuite/ => Test images
|
||||||
|
riscv-rvv/ => Optimized code for the RISC-V Vector platform
|
||||||
testpngs/ => Test images
|
testpngs/ => Test images
|
||||||
tools/ => Various tools
|
tools/ => Various tools
|
||||||
visupng/ => VisualPng, a Windows viewer for PNG images
|
visupng/ => VisualPng, a Windows viewer for PNG images
|
||||||
|
70
aclocal.m4
vendored
70
aclocal.m4
vendored
@ -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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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.
|
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'.])])
|
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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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.
|
# generated from the m4 files accompanying Automake X.Y.
|
||||||
# (This private macro should not be called outside this file.)
|
# (This private macro should not be called outside this file.)
|
||||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
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 Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||||
dnl require some minimum version. Point them to the right macro.
|
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
|
[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.
|
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
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_ifndef([AC_AUTOCONF_VERSION],
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||||
|
|
||||||
# Figure out how to run the assembler. -*- Autoconf -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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 -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -130,7 +130,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
|
|||||||
|
|
||||||
# AM_CONDITIONAL -*- Autoconf -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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.]])
|
Usually this means the macro was only invoked conditionally.]])
|
||||||
fi])])
|
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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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 -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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 -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -521,7 +521,8 @@ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
|||||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
||||||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
||||||
[_AM_PROG_TAR([v7])])])
|
[_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])],
|
||||||
|
[_AM_PROG_TAR([ustar])])])])
|
||||||
_AM_IF_OPTION([no-dependencies],,
|
_AM_IF_OPTION([no-dependencies],,
|
||||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
||||||
[_AM_DEPENDENCIES([CC])],
|
[_AM_DEPENDENCIES([CC])],
|
||||||
@ -597,7 +598,7 @@ for _am_header in $config_headers :; do
|
|||||||
done
|
done
|
||||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -618,7 +619,7 @@ if test x"${install_sh+set}" != xset; then
|
|||||||
fi
|
fi
|
||||||
AC_SUBST([install_sh])])
|
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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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 -*-
|
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
||||||
# From Jim Meyering
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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 -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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 -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -752,7 +753,7 @@ fi
|
|||||||
|
|
||||||
# Helper functions for option handling. -*- Autoconf -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -781,7 +782,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
|
|||||||
AC_DEFUN([_AM_IF_OPTION],
|
AC_DEFUN([_AM_IF_OPTION],
|
||||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
[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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -813,7 +814,10 @@ AC_CACHE_CHECK(
|
|||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
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])
|
unset am_i])
|
||||||
if test "$am_cv_prog_cc_c_o" != yes; then
|
if test "$am_cv_prog_cc_c_o" != yes; then
|
||||||
# Losing compiler, so override with the script.
|
# Losing compiler, so override with the script.
|
||||||
@ -828,7 +832,7 @@ AC_LANG_POP([C])])
|
|||||||
# For backward compatibility.
|
# For backward compatibility.
|
||||||
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
|
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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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)
|
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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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 -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -1032,10 +1036,12 @@ am_lf='
|
|||||||
'
|
'
|
||||||
case `pwd` in
|
case `pwd` in
|
||||||
*[[\\\"\#\$\&\'\`$am_lf]]*)
|
*[[\\\"\#\$\&\'\`$am_lf]]*)
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
AC_MSG_ERROR([unsafe absolute working directory name]);;
|
AC_MSG_ERROR([unsafe absolute working directory name]);;
|
||||||
esac
|
esac
|
||||||
case $srcdir in
|
case $srcdir in
|
||||||
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
|
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
|
AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -1088,7 +1094,7 @@ AC_CONFIG_COMMANDS_PRE(
|
|||||||
rm -f conftest.file
|
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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -1157,9 +1163,13 @@ fi
|
|||||||
# empty being verbose).
|
# empty being verbose).
|
||||||
AC_DEFUN([AM_SILENT_RULES],
|
AC_DEFUN([AM_SILENT_RULES],
|
||||||
[AC_REQUIRE([_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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -1187,7 +1197,7 @@ fi
|
|||||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# 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 -*-
|
# 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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -1341,7 +1351,7 @@ AC_SUBST([am__tar])
|
|||||||
AC_SUBST([am__untar])
|
AC_SUBST([am__untar])
|
||||||
]) # _AM_PROG_TAR
|
]) # _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
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -35,14 +35,14 @@
|
|||||||
#ifndef PNG_ARM_NEON_FILE
|
#ifndef PNG_ARM_NEON_FILE
|
||||||
# if defined(__aarch64__) || defined(_M_ARM64)
|
# if defined(__aarch64__) || defined(_M_ARM64)
|
||||||
/* ARM Neon is expected to be unconditionally available on 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)
|
# elif defined(__ARM_NEON__) || defined(__ARM_NEON)
|
||||||
/* ARM Neon is expected to be available on the target CPU architecture. */
|
/* 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__)
|
# elif defined(__linux__)
|
||||||
# define PNG_ARM_NEON_FILE "contrib/arm-neon/linux.c"
|
# define PNG_ARM_NEON_FILE "contrib/arm-neon/linux.c"
|
||||||
# else
|
# 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
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ static int png_have_neon(png_structp png_ptr);
|
|||||||
#endif /* PNG_ARM_NEON_CHECK_SUPPORTED */
|
#endif /* PNG_ARM_NEON_CHECK_SUPPORTED */
|
||||||
|
|
||||||
#ifndef PNG_ALIGNED_MEMORY_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
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -4,7 +4,7 @@ Scripts for the Continuous Integration of the PNG Reference Library
|
|||||||
Copyright Notice
|
Copyright Notice
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
Copyright (c) 2019-2024 Cosmin Truta.
|
Copyright (c) 2019-2025 Cosmin Truta.
|
||||||
|
|
||||||
Use, modification and distribution are subject to the MIT License.
|
Use, modification and distribution are subject to the MIT License.
|
||||||
Please see the accompanying file `LICENSE_MIT.txt` or visit
|
Please see the accompanying file `LICENSE_MIT.txt` or visit
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -o errexit -o pipefail -o posix
|
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.
|
# Use, modification and distribution are subject to the MIT License.
|
||||||
# Please see the accompanying file LICENSE_MIT.txt
|
# Please see the accompanying file LICENSE_MIT.txt
|
||||||
@ -61,7 +61,7 @@ function ci_lint_ci_scripts {
|
|||||||
}
|
}
|
||||||
ci_info "## LINTING: CI scripts ##"
|
ci_info "## LINTING: CI scripts ##"
|
||||||
ci_spawn "$CI_SHELLCHECK" --version
|
ci_spawn "$CI_SHELLCHECK" --version
|
||||||
find ./ci -maxdepth 1 -name "*.sh" | {
|
find ./ci -name "ci_*.sh" -not -name "ci_env.*.sh" | {
|
||||||
local my_file
|
local my_file
|
||||||
while IFS="" read -r my_file
|
while IFS="" read -r my_file
|
||||||
do
|
do
|
||||||
|
@ -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 [<options>] <files>..."
|
|
||||||
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 "$@"
|
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -o errexit -o pipefail -o posix
|
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.
|
# Use, modification and distribution are subject to the MIT License.
|
||||||
# Please see the accompanying file LICENSE_MIT.txt
|
# Please see the accompanying file LICENSE_MIT.txt
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -o errexit -o pipefail -o posix
|
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.
|
# Use, modification and distribution are subject to the MIT License.
|
||||||
# Please see the accompanying file LICENSE_MIT.txt
|
# Please see the accompanying file LICENSE_MIT.txt
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -o errexit -o pipefail -o posix
|
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.
|
# Use, modification and distribution are subject to the MIT License.
|
||||||
# Please see the accompanying file LICENSE_MIT.txt
|
# Please see the accompanying file LICENSE_MIT.txt
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -o errexit -o pipefail -o posix
|
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.
|
# Use, modification and distribution are subject to the MIT License.
|
||||||
# Please see the accompanying file LICENSE_MIT.txt
|
# 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"
|
source "$(dirname "$0")/lib/ci.lib.sh"
|
||||||
cd "$CI_TOPLEVEL_DIR"
|
cd "$CI_TOPLEVEL_DIR"
|
||||||
|
|
||||||
function ci_init_shellify {
|
# Declare the global environments collected from various sources.
|
||||||
[[ -f $CI_SCRIPT_DIR/ci_shellify.sh ]] || {
|
declare CI_ENV_LIBPNG_VER # collected from png.h
|
||||||
ci_err_internal "missing script: '$CI_SCRIPT_DIR/ci_shellify.sh'"
|
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 {
|
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:" "$@"
|
ci_info "shellifying:" "$@"
|
||||||
local my_result
|
"$BASH" "$my_script" "$@"
|
||||||
"$BASH" "$CI_SCRIPT_DIR/ci_shellify.sh" "$@"
|
|
||||||
echo "$my_result" | "$BASH" --posix || ci_err "bad shellify output"
|
echo "$my_result" | "$BASH" --posix || ci_err "bad shellify output"
|
||||||
echo "$my_result"
|
echo "$my_result"
|
||||||
}
|
}
|
||||||
|
|
||||||
function ci_verify_version {
|
function ci_init_version_verification {
|
||||||
ci_info "## START OF VERIFICATION ##"
|
ci_info "## START OF VERIFICATION ##"
|
||||||
local my_env_libpng_ver my_env_autoconf_ver my_env_cmake_ver my_expect
|
CI_ENV_LIBPNG_VER="$(ci_run_shellify --c png.h)"
|
||||||
ci_init_shellify
|
echo "$CI_ENV_LIBPNG_VER"
|
||||||
my_env_libpng_ver="$(ci_run_shellify png.h)"
|
CI_ENV_AUTOCONF_VER="$(ci_run_shellify --autoconf configure.ac)"
|
||||||
echo "$my_env_libpng_ver"
|
echo "$CI_ENV_AUTOCONF_VER"
|
||||||
my_env_autoconf_ver="$(ci_run_shellify configure.ac)"
|
CI_ENV_CMAKE_VER="$(ci_run_shellify --cmake CMakeLists.txt)"
|
||||||
echo "$my_env_autoconf_ver"
|
echo "$CI_ENV_CMAKE_VER"
|
||||||
my_env_cmake_ver="$(ci_run_shellify CMakeLists.txt)"
|
CI_ENV_LIBPNGCONFIG_VER="$(ci_run_shellify --shell scripts/libpng-config-head.in)"
|
||||||
echo "$my_env_cmake_ver"
|
echo "$CI_ENV_LIBPNGCONFIG_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}"
|
# 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"* ]]
|
if [[ "$PNG_LIBPNG_VER_STRING" == "$my_expect"* ]]
|
||||||
then
|
then
|
||||||
ci_info "matched: \$PNG_LIBPNG_VER_STRING == $my_expect*"
|
ci_info "matched: \$PNG_LIBPNG_VER_STRING == $my_expect*"
|
||||||
@ -77,7 +87,7 @@ function ci_verify_version {
|
|||||||
else
|
else
|
||||||
ci_err "mismatched: \$PNG_LIBPNG_VER_BUILD != [01]"
|
ci_err "mismatched: \$PNG_LIBPNG_VER_BUILD != [01]"
|
||||||
fi
|
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}"
|
my_expect="${PNG_LIBPNG_VER_MAJOR}.${PNG_LIBPNG_VER_MINOR}.${PNG_LIBPNG_VER_RELEASE}"
|
||||||
if [[ "$PNG_LIBPNG_VER_STRING" == "$my_expect" ]]
|
if [[ "$PNG_LIBPNG_VER_STRING" == "$my_expect" ]]
|
||||||
then
|
then
|
||||||
@ -110,19 +120,19 @@ function ci_verify_version {
|
|||||||
else
|
else
|
||||||
ci_err "unexpected: \$PNG_LIBPNG_VER_STRING == '$PNG_LIBPNG_VER_STRING'"
|
ci_err "unexpected: \$PNG_LIBPNG_VER_STRING == '$PNG_LIBPNG_VER_STRING'"
|
||||||
fi
|
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 . _)"
|
my_expect="$(echo "png_libpng_version_${PNG_LIBPNG_VER_STRING}" | tr . _)"
|
||||||
ci_spawn grep -w -e "$my_expect" png.h
|
ci_spawn grep -w -e "$my_expect" png.h
|
||||||
ci_info "## VERIFYING: configure.ac version definitions ##"
|
ci_info "## VERIFYING: version definitions in 'configure.ac' ##"
|
||||||
eval "$my_env_autoconf_ver"
|
eval "$CI_ENV_AUTOCONF_VER"
|
||||||
if [[ "$PNGLIB_VERSION" == "$PNG_LIBPNG_VER_STRING" ]]
|
if [[ "$PNGLIB_VERSION" == "$PNG_LIBPNG_VER_STRING" ]]
|
||||||
then
|
then
|
||||||
ci_info "matched: \$PNGLIB_VERSION == \$PNG_LIBPNG_VER_STRING"
|
ci_info "matched: \$PNGLIB_VERSION == \$PNG_LIBPNG_VER_STRING"
|
||||||
else
|
else
|
||||||
ci_err "mismatched: \$PNGLIB_VERSION != \$PNG_LIBPNG_VER_STRING"
|
ci_err "mismatched: \$PNGLIB_VERSION != \$PNG_LIBPNG_VER_STRING"
|
||||||
fi
|
fi
|
||||||
ci_info "## VERIFYING: CMakeLists.txt version definitions ##"
|
ci_info "## VERIFYING: version definitions in 'CMakeLists.txt' ##"
|
||||||
eval "$my_env_cmake_ver"
|
eval "$CI_ENV_CMAKE_VER"
|
||||||
if [[ "$PNGLIB_VERSION" == "$PNG_LIBPNG_VER_STRING" && "$PNGLIB_SUBREVISION" == 0 ]]
|
if [[ "$PNGLIB_VERSION" == "$PNG_LIBPNG_VER_STRING" && "$PNGLIB_SUBREVISION" == 0 ]]
|
||||||
then
|
then
|
||||||
ci_info "matched: \$PNGLIB_VERSION == \$PNG_LIBPNG_VER_STRING"
|
ci_info "matched: \$PNGLIB_VERSION == \$PNG_LIBPNG_VER_STRING"
|
||||||
@ -133,8 +143,26 @@ function ci_verify_version {
|
|||||||
else
|
else
|
||||||
ci_err "mismatched: \$PNGLIB_VERSION != \$PNG_LIBPNG_VER_STRING"
|
ci_err "mismatched: \$PNGLIB_VERSION != \$PNG_LIBPNG_VER_STRING"
|
||||||
fi
|
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 "## 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 {
|
function usage {
|
||||||
|
@ -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.
|
# Use, modification and distribution are subject to the MIT License.
|
||||||
# Please see the accompanying file LICENSE_MIT.txt
|
# Please see the accompanying file LICENSE_MIT.txt
|
||||||
|
48
ci/libexec/ci_shellify_autoconf.sh
Executable file
48
ci/libexec/ci_shellify_autoconf.sh
Executable file
@ -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 [<options>] 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 "$@"
|
49
ci/libexec/ci_shellify_c.sh
Executable file
49
ci/libexec/ci_shellify_c.sh
Executable file
@ -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 [<options>] 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 "$@"
|
49
ci/libexec/ci_shellify_cmake.sh
Executable file
49
ci/libexec/ci_shellify_cmake.sh
Executable file
@ -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 [<options>] 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 "$@"
|
46
ci/libexec/ci_shellify_shell.sh
Executable file
46
ci/libexec/ci_shellify_shell.sh
Executable file
@ -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 [<options>] 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 "$@"
|
33
compile
33
compile
@ -1,9 +1,9 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Wrapper for compilers which do not understand '-c -o'.
|
# 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 <tromey@cygnus.com>.
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
@ -37,11 +37,11 @@ IFS=" "" $nl"
|
|||||||
|
|
||||||
file_conv=
|
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
|
# Convert a $build file to $host form and store it in $file
|
||||||
# Currently only supports Windows hosts. If the determined conversion
|
# Currently only supports Windows hosts. If the determined conversion
|
||||||
# type is listed in (the comma separated) LAZY, no conversion will
|
# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no
|
||||||
# take place.
|
# conversion will take place.
|
||||||
func_file_conv ()
|
func_file_conv ()
|
||||||
{
|
{
|
||||||
file=$1
|
file=$1
|
||||||
@ -51,9 +51,20 @@ func_file_conv ()
|
|||||||
# lazily determine how to convert abs files
|
# lazily determine how to convert abs files
|
||||||
case `uname -s` in
|
case `uname -s` in
|
||||||
MINGW*)
|
MINGW*)
|
||||||
|
if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then
|
||||||
|
# MSYS2 environment.
|
||||||
|
file_conv=cygwin
|
||||||
|
else
|
||||||
|
# Original MinGW environment.
|
||||||
file_conv=mingw
|
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
|
file_conv=cygwin
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@ -63,12 +74,14 @@ func_file_conv ()
|
|||||||
fi
|
fi
|
||||||
case $file_conv/,$2, in
|
case $file_conv/,$2, in
|
||||||
*,$file_conv,*)
|
*,$file_conv,*)
|
||||||
|
# This is the optimization mentioned above:
|
||||||
|
# If UNNEEDED_CONVERSIONS contains $file_conv, don't convert.
|
||||||
;;
|
;;
|
||||||
mingw/*)
|
mingw/*)
|
||||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||||
;;
|
;;
|
||||||
cygwin/* | msys/*)
|
cygwin/*)
|
||||||
file=`cygpath -m "$file" || echo "$file"`
|
file=`cygpath -w "$file" || echo "$file"`
|
||||||
;;
|
;;
|
||||||
wine/*)
|
wine/*)
|
||||||
file=`winepath -w "$file" || echo "$file"`
|
file=`winepath -w "$file" || echo "$file"`
|
||||||
@ -343,9 +356,9 @@ exit $ret
|
|||||||
# Local Variables:
|
# Local Variables:
|
||||||
# mode: shell-script
|
# mode: shell-script
|
||||||
# sh-indentation: 2
|
# 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-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%Y-%02m-%02d.%02H"
|
||||||
# time-stamp-time-zone: "UTC0"
|
# time-stamp-time-zone: "UTC0"
|
||||||
# time-stamp-end: "; # UTC"
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
9
config.guess
vendored
9
config.guess
vendored
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
# 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
|
# 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
|
# under the terms of the GNU General Public License as published by
|
||||||
@ -123,7 +123,7 @@ set_cc_for_build() {
|
|||||||
dummy=$tmp/dummy
|
dummy=$tmp/dummy
|
||||||
case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
|
case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
|
||||||
,,) echo "int x;" > "$dummy.c"
|
,,) 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
|
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
|
||||||
CC_FOR_BUILD=$driver
|
CC_FOR_BUILD=$driver
|
||||||
break
|
break
|
||||||
@ -634,6 +634,7 @@ EOF
|
|||||||
sed 's/^ //' << EOF > "$dummy.c"
|
sed 's/^ //' << EOF > "$dummy.c"
|
||||||
#include <sys/systemcfg.h>
|
#include <sys/systemcfg.h>
|
||||||
|
|
||||||
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
if (!__power_pc())
|
if (!__power_pc())
|
||||||
@ -718,7 +719,8 @@ EOF
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
int main ()
|
int
|
||||||
|
main ()
|
||||||
{
|
{
|
||||||
#if defined(_SC_KERNEL_BITS)
|
#if defined(_SC_KERNEL_BITS)
|
||||||
long bits = sysconf(_SC_KERNEL_BITS);
|
long bits = sysconf(_SC_KERNEL_BITS);
|
||||||
@ -1621,6 +1623,7 @@ cat > "$dummy.c" <<EOF
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
#if defined (sony)
|
#if defined (sony)
|
||||||
|
@ -108,6 +108,9 @@
|
|||||||
/* Enable POWERPC VSX optimizations */
|
/* Enable POWERPC VSX optimizations */
|
||||||
#undef PNG_POWERPC_VSX_OPT
|
#undef PNG_POWERPC_VSX_OPT
|
||||||
|
|
||||||
|
/* Enable RISCV RVV optimizations */
|
||||||
|
#undef PNG_RISCV_RVV_OPT
|
||||||
|
|
||||||
/* Define to 1 if all of the C89 standard headers exist (not just the ones
|
/* Define to 1 if all of the C89 standard headers exist (not just the ones
|
||||||
required in a freestanding environment). This macro is provided for
|
required in a freestanding environment). This macro is provided for
|
||||||
backward compatibility; new code need not use it. */
|
backward compatibility; new code need not use it. */
|
||||||
|
729
config.sub
vendored
729
config.sub
vendored
@ -2,9 +2,9 @@
|
|||||||
# Configuration validation subroutine script.
|
# Configuration validation subroutine script.
|
||||||
# Copyright 1992-2024 Free Software Foundation, Inc.
|
# Copyright 1992-2024 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
|
||||||
|
|
||||||
timestamp='2024-01-01'
|
timestamp='2024-05-27'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# 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
|
# under the terms of the GNU General Public License as published by
|
||||||
@ -120,7 +120,6 @@ case $# in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
# Split fields of configuration type
|
# Split fields of configuration type
|
||||||
# shellcheck disable=SC2162
|
|
||||||
saved_IFS=$IFS
|
saved_IFS=$IFS
|
||||||
IFS="-" read field1 field2 field3 field4 <<EOF
|
IFS="-" read field1 field2 field3 field4 <<EOF
|
||||||
$1
|
$1
|
||||||
@ -142,10 +141,20 @@ case $1 in
|
|||||||
# parts
|
# parts
|
||||||
maybe_os=$field2-$field3
|
maybe_os=$field2-$field3
|
||||||
case $maybe_os in
|
case $maybe_os in
|
||||||
nto-qnx* | linux-* | uclinux-uclibc* \
|
cloudabi*-eabi* \
|
||||||
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
|
| kfreebsd*-gnu* \
|
||||||
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
|
| knetbsd*-gnu* \
|
||||||
| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
|
| kopensolaris*-gnu* \
|
||||||
|
| linux-* \
|
||||||
|
| managarm-* \
|
||||||
|
| netbsd*-eabi* \
|
||||||
|
| netbsd*-gnu* \
|
||||||
|
| nto-qnx* \
|
||||||
|
| os2-emx* \
|
||||||
|
| rtmk-nova* \
|
||||||
|
| storm-chaos* \
|
||||||
|
| uclinux-gnu* \
|
||||||
|
| uclinux-uclibc* \
|
||||||
| windows-* )
|
| windows-* )
|
||||||
basic_machine=$field1
|
basic_machine=$field1
|
||||||
basic_os=$maybe_os
|
basic_os=$maybe_os
|
||||||
@ -161,8 +170,12 @@ case $1 in
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
*-*)
|
*-*)
|
||||||
# A lone config we happen to match not fitting any pattern
|
|
||||||
case $field1-$field2 in
|
case $field1-$field2 in
|
||||||
|
# Shorthands that happen to contain a single dash
|
||||||
|
convex-c[12] | convex-c3[248])
|
||||||
|
basic_machine=$field2-convex
|
||||||
|
basic_os=
|
||||||
|
;;
|
||||||
decstation-3100)
|
decstation-3100)
|
||||||
basic_machine=mips-dec
|
basic_machine=mips-dec
|
||||||
basic_os=
|
basic_os=
|
||||||
@ -170,28 +183,88 @@ case $1 in
|
|||||||
*-*)
|
*-*)
|
||||||
# Second component is usually, but not always the OS
|
# Second component is usually, but not always the OS
|
||||||
case $field2 in
|
case $field2 in
|
||||||
# Prevent following clause from handling this valid os
|
# Do not treat sunos as a manufacturer
|
||||||
sun*os*)
|
sun*os*)
|
||||||
basic_machine=$field1
|
basic_machine=$field1
|
||||||
basic_os=$field2
|
basic_os=$field2
|
||||||
;;
|
;;
|
||||||
|
# Manufacturers
|
||||||
|
3100* \
|
||||||
|
| 32* \
|
||||||
|
| 3300* \
|
||||||
|
| 3600* \
|
||||||
|
| 7300* \
|
||||||
|
| acorn \
|
||||||
|
| altos* \
|
||||||
|
| apollo \
|
||||||
|
| apple \
|
||||||
|
| atari \
|
||||||
|
| att* \
|
||||||
|
| axis \
|
||||||
|
| be \
|
||||||
|
| bull \
|
||||||
|
| cbm \
|
||||||
|
| ccur \
|
||||||
|
| cisco \
|
||||||
|
| commodore \
|
||||||
|
| convergent* \
|
||||||
|
| convex* \
|
||||||
|
| cray \
|
||||||
|
| crds \
|
||||||
|
| dec* \
|
||||||
|
| delta* \
|
||||||
|
| dg \
|
||||||
|
| digital \
|
||||||
|
| dolphin \
|
||||||
|
| encore* \
|
||||||
|
| gould \
|
||||||
|
| harris \
|
||||||
|
| highlevel \
|
||||||
|
| hitachi* \
|
||||||
|
| hp \
|
||||||
|
| ibm* \
|
||||||
|
| intergraph \
|
||||||
|
| isi* \
|
||||||
|
| knuth \
|
||||||
|
| masscomp \
|
||||||
|
| microblaze* \
|
||||||
|
| mips* \
|
||||||
|
| motorola* \
|
||||||
|
| ncr* \
|
||||||
|
| news \
|
||||||
|
| next \
|
||||||
|
| ns \
|
||||||
|
| oki \
|
||||||
|
| omron* \
|
||||||
|
| pc533* \
|
||||||
|
| rebel \
|
||||||
|
| rom68k \
|
||||||
|
| rombug \
|
||||||
|
| semi \
|
||||||
|
| sequent* \
|
||||||
|
| siemens \
|
||||||
|
| sgi* \
|
||||||
|
| siemens \
|
||||||
|
| sim \
|
||||||
|
| sni \
|
||||||
|
| sony* \
|
||||||
|
| stratus \
|
||||||
|
| sun \
|
||||||
|
| sun[234]* \
|
||||||
|
| tektronix \
|
||||||
|
| tti* \
|
||||||
|
| ultra \
|
||||||
|
| unicom* \
|
||||||
|
| wec \
|
||||||
|
| winbond \
|
||||||
|
| wrs)
|
||||||
|
basic_machine=$field1-$field2
|
||||||
|
basic_os=
|
||||||
|
;;
|
||||||
zephyr*)
|
zephyr*)
|
||||||
basic_machine=$field1-unknown
|
basic_machine=$field1-unknown
|
||||||
basic_os=$field2
|
basic_os=$field2
|
||||||
;;
|
;;
|
||||||
# Manufacturers
|
|
||||||
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
|
|
||||||
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
|
|
||||||
| unicom* | ibm* | next | hp | isi* | apollo | altos* \
|
|
||||||
| convergent* | ncr* | news | 32* | 3600* | 3100* \
|
|
||||||
| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
|
|
||||||
| ultra | tti* | harris | dolphin | highlevel | gould \
|
|
||||||
| cbm | ns | masscomp | apple | axis | knuth | cray \
|
|
||||||
| microblaze* | sim | cisco \
|
|
||||||
| oki | wec | wrs | winbond)
|
|
||||||
basic_machine=$field1-$field2
|
|
||||||
basic_os=
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
basic_machine=$field1
|
basic_machine=$field1
|
||||||
basic_os=$field2
|
basic_os=$field2
|
||||||
@ -272,26 +345,6 @@ case $1 in
|
|||||||
basic_machine=arm-unknown
|
basic_machine=arm-unknown
|
||||||
basic_os=cegcc
|
basic_os=cegcc
|
||||||
;;
|
;;
|
||||||
convex-c1)
|
|
||||||
basic_machine=c1-convex
|
|
||||||
basic_os=bsd
|
|
||||||
;;
|
|
||||||
convex-c2)
|
|
||||||
basic_machine=c2-convex
|
|
||||||
basic_os=bsd
|
|
||||||
;;
|
|
||||||
convex-c32)
|
|
||||||
basic_machine=c32-convex
|
|
||||||
basic_os=bsd
|
|
||||||
;;
|
|
||||||
convex-c34)
|
|
||||||
basic_machine=c34-convex
|
|
||||||
basic_os=bsd
|
|
||||||
;;
|
|
||||||
convex-c38)
|
|
||||||
basic_machine=c38-convex
|
|
||||||
basic_os=bsd
|
|
||||||
;;
|
|
||||||
cray)
|
cray)
|
||||||
basic_machine=j90-cray
|
basic_machine=j90-cray
|
||||||
basic_os=unicos
|
basic_os=unicos
|
||||||
@ -714,15 +767,26 @@ case $basic_machine in
|
|||||||
vendor=dec
|
vendor=dec
|
||||||
basic_os=tops20
|
basic_os=tops20
|
||||||
;;
|
;;
|
||||||
delta | 3300 | motorola-3300 | motorola-delta \
|
delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
|
||||||
| 3300-motorola | delta-motorola)
|
|
||||||
cpu=m68k
|
cpu=m68k
|
||||||
vendor=motorola
|
vendor=motorola
|
||||||
;;
|
;;
|
||||||
dpx2*)
|
# This used to be dpx2*, but that gets the RS6000-based
|
||||||
|
# DPX/20 and the x86-based DPX/2-100 wrong. See
|
||||||
|
# https://oldskool.silicium.org/stations/bull_dpx20.htm
|
||||||
|
# https://www.feb-patrimoine.com/english/bull_dpx2.htm
|
||||||
|
# https://www.feb-patrimoine.com/english/unix_and_bull.htm
|
||||||
|
dpx2 | dpx2[23]00 | dpx2[23]xx)
|
||||||
cpu=m68k
|
cpu=m68k
|
||||||
vendor=bull
|
vendor=bull
|
||||||
basic_os=sysv3
|
;;
|
||||||
|
dpx2100 | dpx21xx)
|
||||||
|
cpu=i386
|
||||||
|
vendor=bull
|
||||||
|
;;
|
||||||
|
dpx20)
|
||||||
|
cpu=rs6000
|
||||||
|
vendor=bull
|
||||||
;;
|
;;
|
||||||
encore | umax | mmax)
|
encore | umax | mmax)
|
||||||
cpu=ns32k
|
cpu=ns32k
|
||||||
@ -837,18 +901,6 @@ case $basic_machine in
|
|||||||
next | m*-next)
|
next | m*-next)
|
||||||
cpu=m68k
|
cpu=m68k
|
||||||
vendor=next
|
vendor=next
|
||||||
case $basic_os in
|
|
||||||
openstep*)
|
|
||||||
;;
|
|
||||||
nextstep*)
|
|
||||||
;;
|
|
||||||
ns2*)
|
|
||||||
basic_os=nextstep2
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
basic_os=nextstep3
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
;;
|
||||||
np1)
|
np1)
|
||||||
cpu=np1
|
cpu=np1
|
||||||
@ -937,7 +989,6 @@ case $basic_machine in
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
*-*)
|
*-*)
|
||||||
# shellcheck disable=SC2162
|
|
||||||
saved_IFS=$IFS
|
saved_IFS=$IFS
|
||||||
IFS="-" read cpu vendor <<EOF
|
IFS="-" read cpu vendor <<EOF
|
||||||
$basic_machine
|
$basic_machine
|
||||||
@ -972,15 +1023,19 @@ unset -v basic_machine
|
|||||||
|
|
||||||
# Decode basic machines in the full and proper CPU-Company form.
|
# Decode basic machines in the full and proper CPU-Company form.
|
||||||
case $cpu-$vendor in
|
case $cpu-$vendor in
|
||||||
# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
|
# Here we handle the default manufacturer of certain CPU types in canonical form.
|
||||||
# some cases the only manufacturer, in others, it is the most popular.
|
# It is in some cases the only manufacturer, in others, it is the most popular.
|
||||||
|
c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown)
|
||||||
|
vendor=convex
|
||||||
|
basic_os=${basic_os:-bsd}
|
||||||
|
;;
|
||||||
craynv-unknown)
|
craynv-unknown)
|
||||||
vendor=cray
|
vendor=cray
|
||||||
basic_os=${basic_os:-unicosmp}
|
basic_os=${basic_os:-unicosmp}
|
||||||
;;
|
;;
|
||||||
c90-unknown | c90-cray)
|
c90-unknown | c90-cray)
|
||||||
vendor=cray
|
vendor=cray
|
||||||
basic_os=${Basic_os:-unicos}
|
basic_os=${basic_os:-unicos}
|
||||||
;;
|
;;
|
||||||
fx80-unknown)
|
fx80-unknown)
|
||||||
vendor=alliant
|
vendor=alliant
|
||||||
@ -1026,11 +1081,29 @@ case $cpu-$vendor in
|
|||||||
vendor=alt
|
vendor=alt
|
||||||
basic_os=${basic_os:-linux-gnueabihf}
|
basic_os=${basic_os:-linux-gnueabihf}
|
||||||
;;
|
;;
|
||||||
dpx20-unknown | dpx20-bull)
|
|
||||||
cpu=rs6000
|
# Normalized CPU+vendor pairs that imply an OS, if not otherwise specified
|
||||||
vendor=bull
|
m68k-isi)
|
||||||
|
basic_os=${basic_os:-sysv}
|
||||||
|
;;
|
||||||
|
m68k-sony)
|
||||||
|
basic_os=${basic_os:-newsos}
|
||||||
|
;;
|
||||||
|
m68k-tektronix)
|
||||||
|
basic_os=${basic_os:-bsd}
|
||||||
|
;;
|
||||||
|
m88k-harris)
|
||||||
|
basic_os=${basic_os:-sysv3}
|
||||||
|
;;
|
||||||
|
i386-bull | m68k-bull)
|
||||||
|
basic_os=${basic_os:-sysv3}
|
||||||
|
;;
|
||||||
|
rs6000-bull)
|
||||||
basic_os=${basic_os:-bosx}
|
basic_os=${basic_os:-bosx}
|
||||||
;;
|
;;
|
||||||
|
mips-sni)
|
||||||
|
basic_os=${basic_os:-sysv4}
|
||||||
|
;;
|
||||||
|
|
||||||
# Here we normalize CPU types irrespective of the vendor
|
# Here we normalize CPU types irrespective of the vendor
|
||||||
amd64-*)
|
amd64-*)
|
||||||
@ -1038,7 +1111,7 @@ case $cpu-$vendor in
|
|||||||
;;
|
;;
|
||||||
blackfin-*)
|
blackfin-*)
|
||||||
cpu=bfin
|
cpu=bfin
|
||||||
basic_os=linux
|
basic_os=${basic_os:-linux}
|
||||||
;;
|
;;
|
||||||
c54x-*)
|
c54x-*)
|
||||||
cpu=tic54x
|
cpu=tic54x
|
||||||
@ -1061,7 +1134,7 @@ case $cpu-$vendor in
|
|||||||
;;
|
;;
|
||||||
m68knommu-*)
|
m68knommu-*)
|
||||||
cpu=m68k
|
cpu=m68k
|
||||||
basic_os=linux
|
basic_os=${basic_os:-linux}
|
||||||
;;
|
;;
|
||||||
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
|
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
|
||||||
cpu=s12z
|
cpu=s12z
|
||||||
@ -1071,7 +1144,7 @@ case $cpu-$vendor in
|
|||||||
;;
|
;;
|
||||||
parisc-*)
|
parisc-*)
|
||||||
cpu=hppa
|
cpu=hppa
|
||||||
basic_os=linux
|
basic_os=${basic_os:-linux}
|
||||||
;;
|
;;
|
||||||
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
||||||
cpu=i586
|
cpu=i586
|
||||||
@ -1085,9 +1158,6 @@ case $cpu-$vendor in
|
|||||||
pentium4-*)
|
pentium4-*)
|
||||||
cpu=i786
|
cpu=i786
|
||||||
;;
|
;;
|
||||||
pc98-*)
|
|
||||||
cpu=i386
|
|
||||||
;;
|
|
||||||
ppc-* | ppcbe-*)
|
ppc-* | ppcbe-*)
|
||||||
cpu=powerpc
|
cpu=powerpc
|
||||||
;;
|
;;
|
||||||
@ -1121,9 +1191,6 @@ case $cpu-$vendor in
|
|||||||
tx39el-*)
|
tx39el-*)
|
||||||
cpu=mipstx39el
|
cpu=mipstx39el
|
||||||
;;
|
;;
|
||||||
x64-*)
|
|
||||||
cpu=x86_64
|
|
||||||
;;
|
|
||||||
xscale-* | xscalee[bl]-*)
|
xscale-* | xscalee[bl]-*)
|
||||||
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
|
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
|
||||||
;;
|
;;
|
||||||
@ -1179,90 +1246,227 @@ case $cpu-$vendor in
|
|||||||
# Recognize the canonical CPU types that are allowed with any
|
# Recognize the canonical CPU types that are allowed with any
|
||||||
# company name.
|
# company name.
|
||||||
case $cpu in
|
case $cpu in
|
||||||
1750a | 580 \
|
1750a \
|
||||||
|
| 580 \
|
||||||
|
| [cjt]90 \
|
||||||
| a29k \
|
| a29k \
|
||||||
| aarch64 | aarch64_be | aarch64c | arm64ec \
|
| aarch64 \
|
||||||
|
| aarch64_be \
|
||||||
|
| aarch64c \
|
||||||
| abacus \
|
| abacus \
|
||||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
|
| alpha \
|
||||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
|
| alpha64 \
|
||||||
| alphapca5[67] | alpha64pca5[67] \
|
| alpha64ev56 \
|
||||||
|
| alpha64ev6[78] \
|
||||||
|
| alpha64ev[4-8] \
|
||||||
|
| alpha64pca5[67] \
|
||||||
|
| alphaev56 \
|
||||||
|
| alphaev6[78] \
|
||||||
|
| alphaev[4-8] \
|
||||||
|
| alphapca5[67] \
|
||||||
| am33_2.0 \
|
| am33_2.0 \
|
||||||
| amdgcn \
|
| amdgcn \
|
||||||
| arc | arceb | arc32 | arc64 \
|
| arc \
|
||||||
| arm | arm[lb]e | arme[lb] | armv* \
|
| arc32 \
|
||||||
| avr | avr32 \
|
| arc64 \
|
||||||
|
| arceb \
|
||||||
|
| arm \
|
||||||
|
| arm64e \
|
||||||
|
| arm64ec \
|
||||||
|
| arm[lb]e \
|
||||||
|
| arme[lb] \
|
||||||
|
| armv* \
|
||||||
| asmjs \
|
| asmjs \
|
||||||
|
| avr \
|
||||||
|
| avr32 \
|
||||||
| ba \
|
| ba \
|
||||||
| be32 | be64 \
|
| be32 \
|
||||||
| bfin | bpf | bs2000 \
|
| be64 \
|
||||||
| c[123]* | c30 | [cjt]90 | c4x \
|
| bfin \
|
||||||
| c8051 | clipper | craynv | csky | cydra \
|
| bpf \
|
||||||
| d10v | d30v | dlx | dsp16xx \
|
| bs2000 \
|
||||||
| e2k | elxsi | epiphany \
|
| c30 \
|
||||||
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
|
| c4x \
|
||||||
| javascript \
|
| c8051 \
|
||||||
| h8300 | h8500 \
|
| c[123]* \
|
||||||
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
| clipper \
|
||||||
|
| craynv \
|
||||||
|
| csky \
|
||||||
|
| cydra \
|
||||||
|
| d10v \
|
||||||
|
| d30v \
|
||||||
|
| dlx \
|
||||||
|
| dsp16xx \
|
||||||
|
| e2k \
|
||||||
|
| elxsi \
|
||||||
|
| epiphany \
|
||||||
|
| f30[01] \
|
||||||
|
| f700 \
|
||||||
|
| fido \
|
||||||
|
| fr30 \
|
||||||
|
| frv \
|
||||||
|
| ft32 \
|
||||||
|
| fx80 \
|
||||||
|
| h8300 \
|
||||||
|
| h8500 \
|
||||||
| hexagon \
|
| hexagon \
|
||||||
| i370 | i*86 | i860 | i960 | ia16 | ia64 \
|
| hppa \
|
||||||
| ip2k | iq2000 \
|
| hppa1.[01] \
|
||||||
|
| hppa2.0 \
|
||||||
|
| hppa2.0[nw] \
|
||||||
|
| hppa64 \
|
||||||
|
| i*86 \
|
||||||
|
| i370 \
|
||||||
|
| i860 \
|
||||||
|
| i960 \
|
||||||
|
| ia16 \
|
||||||
|
| ia64 \
|
||||||
|
| ip2k \
|
||||||
|
| iq2000 \
|
||||||
|
| javascript \
|
||||||
| k1om \
|
| k1om \
|
||||||
| kvx \
|
| kvx \
|
||||||
| le32 | le64 \
|
| le32 \
|
||||||
|
| le64 \
|
||||||
| lm32 \
|
| lm32 \
|
||||||
| loongarch32 | loongarch64 \
|
| loongarch32 \
|
||||||
| m32c | m32r | m32rle \
|
| loongarch64 \
|
||||||
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
|
| m32c \
|
||||||
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
|
| m32r \
|
||||||
| m88110 | m88k | maxq | mb | mcore | mep | metag \
|
| m32rle \
|
||||||
| microblaze | microblazeel \
|
| m5200 \
|
||||||
|
| m68000 \
|
||||||
|
| m680[012346]0 \
|
||||||
|
| m6811 \
|
||||||
|
| m6812 \
|
||||||
|
| m68360 \
|
||||||
|
| m683?2 \
|
||||||
|
| m68hc11 \
|
||||||
|
| m68hc12 \
|
||||||
|
| m68hcs12x \
|
||||||
|
| m68k \
|
||||||
|
| m88110 \
|
||||||
|
| m88k \
|
||||||
|
| maxq \
|
||||||
|
| mb \
|
||||||
|
| mcore \
|
||||||
|
| mep \
|
||||||
|
| metag \
|
||||||
|
| microblaze \
|
||||||
|
| microblazeel \
|
||||||
| mips* \
|
| mips* \
|
||||||
| mmix \
|
| mmix \
|
||||||
| mn10200 | mn10300 \
|
| mn10200 \
|
||||||
|
| mn10300 \
|
||||||
| moxie \
|
| moxie \
|
||||||
| mt \
|
|
||||||
| msp430 \
|
| msp430 \
|
||||||
|
| mt \
|
||||||
| nanomips* \
|
| nanomips* \
|
||||||
| nds32 | nds32le | nds32be \
|
| nds32 \
|
||||||
|
| nds32be \
|
||||||
|
| nds32le \
|
||||||
| nfp \
|
| nfp \
|
||||||
| nios | nios2 | nios2eb | nios2el \
|
| nios \
|
||||||
| none | np1 | ns16k | ns32k | nvptx \
|
| nios2 \
|
||||||
|
| nios2eb \
|
||||||
|
| nios2el \
|
||||||
|
| none \
|
||||||
|
| np1 \
|
||||||
|
| ns16k \
|
||||||
|
| ns32k \
|
||||||
|
| nvptx \
|
||||||
| open8 \
|
| open8 \
|
||||||
| or1k* \
|
| or1k* \
|
||||||
| or32 \
|
| or32 \
|
||||||
| orion \
|
| orion \
|
||||||
|
| pdp10 \
|
||||||
|
| pdp11 \
|
||||||
| picochip \
|
| picochip \
|
||||||
| pdp10 | pdp11 | pj | pjl | pn | power \
|
| pj \
|
||||||
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
|
| pjl \
|
||||||
|
| pn \
|
||||||
|
| power \
|
||||||
|
| powerpc \
|
||||||
|
| powerpc64 \
|
||||||
|
| powerpc64le \
|
||||||
|
| powerpcle \
|
||||||
|
| powerpcspe \
|
||||||
| pru \
|
| pru \
|
||||||
| pyramid \
|
| pyramid \
|
||||||
| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
|
| riscv \
|
||||||
| rl78 | romp | rs6000 | rx \
|
| riscv32 \
|
||||||
| s390 | s390x \
|
| riscv32be \
|
||||||
|
| riscv64 \
|
||||||
|
| riscv64be \
|
||||||
|
| rl78 \
|
||||||
|
| romp \
|
||||||
|
| rs6000 \
|
||||||
|
| rx \
|
||||||
|
| s390 \
|
||||||
|
| s390x \
|
||||||
| score \
|
| score \
|
||||||
| sh | shl \
|
| sh \
|
||||||
| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
|
| sh64 \
|
||||||
| sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
|
| sh64le \
|
||||||
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
|
| sh[12345][lb]e \
|
||||||
|
| sh[1234] \
|
||||||
|
| sh[1234]e[lb] \
|
||||||
|
| sh[23]e \
|
||||||
|
| sh[23]ele \
|
||||||
|
| sh[24]a \
|
||||||
|
| sh[24]ae[lb] \
|
||||||
|
| sh[lb]e \
|
||||||
|
| she[lb] \
|
||||||
|
| shl \
|
||||||
|
| sparc \
|
||||||
|
| sparc64 \
|
||||||
|
| sparc64b \
|
||||||
|
| sparc64v \
|
||||||
|
| sparc86x \
|
||||||
|
| sparclet \
|
||||||
| sparclite \
|
| sparclite \
|
||||||
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
|
| sparcv8 \
|
||||||
|
| sparcv9 \
|
||||||
|
| sparcv9b \
|
||||||
|
| sparcv9v \
|
||||||
| spu \
|
| spu \
|
||||||
|
| sv1 \
|
||||||
|
| sx* \
|
||||||
| tahoe \
|
| tahoe \
|
||||||
| thumbv7* \
|
| thumbv7* \
|
||||||
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
|
| tic30 \
|
||||||
|
| tic4x \
|
||||||
|
| tic54x \
|
||||||
|
| tic55x \
|
||||||
|
| tic6x \
|
||||||
|
| tic80 \
|
||||||
| tron \
|
| tron \
|
||||||
| ubicom32 \
|
| ubicom32 \
|
||||||
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
|
| v70 \
|
||||||
|
| v810 \
|
||||||
|
| v850 \
|
||||||
|
| v850e \
|
||||||
|
| v850e1 \
|
||||||
|
| v850e2 \
|
||||||
|
| v850e2v3 \
|
||||||
|
| v850es \
|
||||||
| vax \
|
| vax \
|
||||||
| vc4 \
|
| vc4 \
|
||||||
| visium \
|
| visium \
|
||||||
| w65 \
|
| w65 \
|
||||||
| wasm32 | wasm64 \
|
| wasm32 \
|
||||||
|
| wasm64 \
|
||||||
| we32k \
|
| we32k \
|
||||||
| x86 | x86_64 | xc16x | xgate | xps100 \
|
| x86 \
|
||||||
| xstormy16 | xtensa* \
|
| x86_64 \
|
||||||
|
| xc16x \
|
||||||
|
| xgate \
|
||||||
|
| xps100 \
|
||||||
|
| xstormy16 \
|
||||||
|
| xtensa* \
|
||||||
| ymp \
|
| ymp \
|
||||||
| z8k | z80)
|
| z80 \
|
||||||
|
| z8k)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
@ -1307,7 +1511,6 @@ case $basic_os in
|
|||||||
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
|
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
|
||||||
;;
|
;;
|
||||||
*-*)
|
*-*)
|
||||||
# shellcheck disable=SC2162
|
|
||||||
saved_IFS=$IFS
|
saved_IFS=$IFS
|
||||||
IFS="-" read kernel os <<EOF
|
IFS="-" read kernel os <<EOF
|
||||||
$basic_os
|
$basic_os
|
||||||
@ -1354,6 +1557,23 @@ case $os in
|
|||||||
unixware*)
|
unixware*)
|
||||||
os=sysv4.2uw
|
os=sysv4.2uw
|
||||||
;;
|
;;
|
||||||
|
# The marketing names for NeXT's operating systems were
|
||||||
|
# NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4. 'openstep' is
|
||||||
|
# mapped to 'openstep3', but 'openstep1' and 'openstep2' are
|
||||||
|
# mapped to 'nextstep' and 'nextstep2', consistent with the
|
||||||
|
# treatment of SunOS/Solaris.
|
||||||
|
ns | ns1 | nextstep | nextstep1 | openstep1)
|
||||||
|
os=nextstep
|
||||||
|
;;
|
||||||
|
ns2 | nextstep2 | openstep2)
|
||||||
|
os=nextstep2
|
||||||
|
;;
|
||||||
|
ns3 | nextstep3 | openstep | openstep3)
|
||||||
|
os=openstep3
|
||||||
|
;;
|
||||||
|
ns4 | nextstep4 | openstep4)
|
||||||
|
os=openstep4
|
||||||
|
;;
|
||||||
# es1800 is here to avoid being matched by es* (a different OS)
|
# es1800 is here to avoid being matched by es* (a different OS)
|
||||||
es1800*)
|
es1800*)
|
||||||
os=ose
|
os=ose
|
||||||
@ -1424,6 +1644,7 @@ case $os in
|
|||||||
;;
|
;;
|
||||||
utek*)
|
utek*)
|
||||||
os=bsd
|
os=bsd
|
||||||
|
vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
|
||||||
;;
|
;;
|
||||||
dynix*)
|
dynix*)
|
||||||
os=bsd
|
os=bsd
|
||||||
@ -1440,21 +1661,25 @@ case $os in
|
|||||||
386bsd)
|
386bsd)
|
||||||
os=bsd
|
os=bsd
|
||||||
;;
|
;;
|
||||||
ctix* | uts*)
|
ctix*)
|
||||||
|
os=sysv
|
||||||
|
vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
|
||||||
|
;;
|
||||||
|
uts*)
|
||||||
os=sysv
|
os=sysv
|
||||||
;;
|
;;
|
||||||
nova*)
|
nova*)
|
||||||
os=rtmk-nova
|
kernel=rtmk
|
||||||
;;
|
os=nova
|
||||||
ns2)
|
|
||||||
os=nextstep2
|
|
||||||
;;
|
;;
|
||||||
# Preserve the version number of sinix5.
|
# Preserve the version number of sinix5.
|
||||||
sinix5.*)
|
sinix5.*)
|
||||||
os=`echo "$os" | sed -e 's|sinix|sysv|'`
|
os=`echo "$os" | sed -e 's|sinix|sysv|'`
|
||||||
|
vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
|
||||||
;;
|
;;
|
||||||
sinix*)
|
sinix*)
|
||||||
os=sysv4
|
os=sysv4
|
||||||
|
vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
|
||||||
;;
|
;;
|
||||||
tpf*)
|
tpf*)
|
||||||
os=tpf
|
os=tpf
|
||||||
@ -1595,6 +1820,14 @@ case $cpu-$vendor in
|
|||||||
os=
|
os=
|
||||||
obj=elf
|
obj=elf
|
||||||
;;
|
;;
|
||||||
|
# The -sgi and -siemens entries must be before the mips- entry
|
||||||
|
# or we get the wrong os.
|
||||||
|
*-sgi)
|
||||||
|
os=irix
|
||||||
|
;;
|
||||||
|
*-siemens)
|
||||||
|
os=sysv4
|
||||||
|
;;
|
||||||
mips*-cisco)
|
mips*-cisco)
|
||||||
os=
|
os=
|
||||||
obj=elf
|
obj=elf
|
||||||
@ -1607,7 +1840,8 @@ case $cpu-$vendor in
|
|||||||
os=
|
os=
|
||||||
obj=coff
|
obj=coff
|
||||||
;;
|
;;
|
||||||
*-tti) # must be before sparc entry or we get the wrong os.
|
# This must be before the sparc-* entry or we get the wrong os.
|
||||||
|
*-tti)
|
||||||
os=sysv3
|
os=sysv3
|
||||||
;;
|
;;
|
||||||
sparc-* | *-sun)
|
sparc-* | *-sun)
|
||||||
@ -1639,7 +1873,7 @@ case $cpu-$vendor in
|
|||||||
os=hpux
|
os=hpux
|
||||||
;;
|
;;
|
||||||
*-hitachi)
|
*-hitachi)
|
||||||
os=hiux
|
os=hiuxwe2
|
||||||
;;
|
;;
|
||||||
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
|
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
|
||||||
os=sysv
|
os=sysv
|
||||||
@ -1683,12 +1917,6 @@ case $cpu-$vendor in
|
|||||||
*-encore)
|
*-encore)
|
||||||
os=bsd
|
os=bsd
|
||||||
;;
|
;;
|
||||||
*-sgi)
|
|
||||||
os=irix
|
|
||||||
;;
|
|
||||||
*-siemens)
|
|
||||||
os=sysv4
|
|
||||||
;;
|
|
||||||
*-masscomp)
|
*-masscomp)
|
||||||
os=rtu
|
os=rtu
|
||||||
;;
|
;;
|
||||||
@ -1735,40 +1963,193 @@ case $os in
|
|||||||
ghcjs)
|
ghcjs)
|
||||||
;;
|
;;
|
||||||
# Now accept the basic system types.
|
# Now accept the basic system types.
|
||||||
# The portable systems comes first.
|
|
||||||
# Each alternative MUST end in a * to match a version number.
|
# Each alternative MUST end in a * to match a version number.
|
||||||
gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
|
abug \
|
||||||
| *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
|
| aix* \
|
||||||
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
|
| amdhsa* \
|
||||||
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
|
| amigados* \
|
||||||
| hiux* | abug | nacl* | netware* | windows* \
|
| amigaos* \
|
||||||
| os9* | macos* | osx* | ios* | tvos* | watchos* \
|
| android* \
|
||||||
| mpw* | magic* | mmixware* | mon960* | lnews* \
|
| aof* \
|
||||||
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
|
| aos* \
|
||||||
| aos* | aros* | cloudabi* | sortix* | twizzler* \
|
| aros* \
|
||||||
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
|
| atheos* \
|
||||||
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
|
| auroraux* \
|
||||||
| mirbsd* | netbsd* | dicos* | openedition* | ose* \
|
| aux* \
|
||||||
| bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
|
| beos* \
|
||||||
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
|
| bitrig* \
|
||||||
| bosx* | nextstep* | cxux* | oabi* \
|
| bme* \
|
||||||
| ptx* | ecoff* | winnt* | domain* | vsta* \
|
| bosx* \
|
||||||
| udi* | lites* | ieee* | go32* | aux* | hcos* \
|
| bsd* \
|
||||||
| chorusrdb* | cegcc* | glidix* | serenity* \
|
| cegcc* \
|
||||||
| cygwin* | msys* | moss* | proelf* | rtems* \
|
| chorusos* \
|
||||||
| midipix* | mingw32* | mingw64* | mint* \
|
| chorusrdb* \
|
||||||
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
|
| clix* \
|
||||||
| interix* | uwin* | mks* | rhapsody* | darwin* \
|
| cloudabi* \
|
||||||
| openstep* | oskit* | conix* | pw32* | nonstopux* \
|
| cnk* \
|
||||||
| storm-chaos* | tops10* | tenex* | tops20* | its* \
|
| conix* \
|
||||||
| os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
|
| cos* \
|
||||||
| scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
|
| cxux* \
|
||||||
| powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
|
| cygwin* \
|
||||||
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
|
| darwin* \
|
||||||
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
|
| dgux* \
|
||||||
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
|
| dicos* \
|
||||||
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
|
| dnix* \
|
||||||
| fiwix* | mlibc* | cos* | mbr* | ironclad* )
|
| domain* \
|
||||||
|
| dragonfly* \
|
||||||
|
| drops* \
|
||||||
|
| ebmon* \
|
||||||
|
| ecoff* \
|
||||||
|
| ekkobsd* \
|
||||||
|
| emscripten* \
|
||||||
|
| emx* \
|
||||||
|
| es* \
|
||||||
|
| fiwix* \
|
||||||
|
| freebsd* \
|
||||||
|
| fuchsia* \
|
||||||
|
| genix* \
|
||||||
|
| genode* \
|
||||||
|
| glidix* \
|
||||||
|
| gnu* \
|
||||||
|
| go32* \
|
||||||
|
| haiku* \
|
||||||
|
| hcos* \
|
||||||
|
| hiux* \
|
||||||
|
| hms* \
|
||||||
|
| hpux* \
|
||||||
|
| ieee* \
|
||||||
|
| interix* \
|
||||||
|
| ios* \
|
||||||
|
| iris* \
|
||||||
|
| irix* \
|
||||||
|
| ironclad* \
|
||||||
|
| isc* \
|
||||||
|
| its* \
|
||||||
|
| l4re* \
|
||||||
|
| libertybsd* \
|
||||||
|
| lites* \
|
||||||
|
| lnews* \
|
||||||
|
| luna* \
|
||||||
|
| lynxos* \
|
||||||
|
| mach* \
|
||||||
|
| macos* \
|
||||||
|
| magic* \
|
||||||
|
| mbr* \
|
||||||
|
| midipix* \
|
||||||
|
| midnightbsd* \
|
||||||
|
| mingw32* \
|
||||||
|
| mingw64* \
|
||||||
|
| minix* \
|
||||||
|
| mint* \
|
||||||
|
| mirbsd* \
|
||||||
|
| mks* \
|
||||||
|
| mlibc* \
|
||||||
|
| mmixware* \
|
||||||
|
| mon960* \
|
||||||
|
| morphos* \
|
||||||
|
| moss* \
|
||||||
|
| moxiebox* \
|
||||||
|
| mpeix* \
|
||||||
|
| mpw* \
|
||||||
|
| msdos* \
|
||||||
|
| msys* \
|
||||||
|
| mvs* \
|
||||||
|
| nacl* \
|
||||||
|
| netbsd* \
|
||||||
|
| netware* \
|
||||||
|
| newsos* \
|
||||||
|
| nextstep* \
|
||||||
|
| nindy* \
|
||||||
|
| nonstopux* \
|
||||||
|
| nova* \
|
||||||
|
| nsk* \
|
||||||
|
| nucleus* \
|
||||||
|
| nx6 \
|
||||||
|
| nx7 \
|
||||||
|
| oabi* \
|
||||||
|
| ohos* \
|
||||||
|
| onefs* \
|
||||||
|
| openbsd* \
|
||||||
|
| openedition* \
|
||||||
|
| openstep* \
|
||||||
|
| os108* \
|
||||||
|
| os2* \
|
||||||
|
| os400* \
|
||||||
|
| os68k* \
|
||||||
|
| os9* \
|
||||||
|
| ose* \
|
||||||
|
| osf* \
|
||||||
|
| oskit* \
|
||||||
|
| osx* \
|
||||||
|
| palmos* \
|
||||||
|
| phoenix* \
|
||||||
|
| plan9* \
|
||||||
|
| powermax* \
|
||||||
|
| powerunix* \
|
||||||
|
| proelf* \
|
||||||
|
| psos* \
|
||||||
|
| psp* \
|
||||||
|
| ptx* \
|
||||||
|
| pw32* \
|
||||||
|
| qnx* \
|
||||||
|
| rdos* \
|
||||||
|
| redox* \
|
||||||
|
| rhapsody* \
|
||||||
|
| riscix* \
|
||||||
|
| riscos* \
|
||||||
|
| rtems* \
|
||||||
|
| rtmk* \
|
||||||
|
| rtu* \
|
||||||
|
| scout* \
|
||||||
|
| secbsd* \
|
||||||
|
| sei* \
|
||||||
|
| serenity* \
|
||||||
|
| sim* \
|
||||||
|
| skyos* \
|
||||||
|
| solaris* \
|
||||||
|
| solidbsd* \
|
||||||
|
| sortix* \
|
||||||
|
| storm-chaos* \
|
||||||
|
| sunos \
|
||||||
|
| sunos[34]* \
|
||||||
|
| superux* \
|
||||||
|
| syllable* \
|
||||||
|
| sym* \
|
||||||
|
| sysv* \
|
||||||
|
| tenex* \
|
||||||
|
| tirtos* \
|
||||||
|
| toppers* \
|
||||||
|
| tops10* \
|
||||||
|
| tops20* \
|
||||||
|
| tpf* \
|
||||||
|
| tvos* \
|
||||||
|
| twizzler* \
|
||||||
|
| uclinux* \
|
||||||
|
| udi* \
|
||||||
|
| udk* \
|
||||||
|
| ultrix* \
|
||||||
|
| unicos* \
|
||||||
|
| uniplus* \
|
||||||
|
| unleashed* \
|
||||||
|
| unos* \
|
||||||
|
| uwin* \
|
||||||
|
| uxpv* \
|
||||||
|
| v88r* \
|
||||||
|
|*vms* \
|
||||||
|
| vos* \
|
||||||
|
| vsta* \
|
||||||
|
| vxsim* \
|
||||||
|
| vxworks* \
|
||||||
|
| wasi* \
|
||||||
|
| watchos* \
|
||||||
|
| wince* \
|
||||||
|
| windiss* \
|
||||||
|
| windows* \
|
||||||
|
| winnt* \
|
||||||
|
| xenix* \
|
||||||
|
| xray* \
|
||||||
|
| zephyr* \
|
||||||
|
| zvmoe* )
|
||||||
;;
|
;;
|
||||||
# This one is extra strict with allowed versions
|
# This one is extra strict with allowed versions
|
||||||
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
|
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
|
||||||
@ -1829,9 +2210,9 @@ esac
|
|||||||
case $kernel-$os-$obj in
|
case $kernel-$os-$obj in
|
||||||
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
|
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
|
||||||
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
|
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
|
||||||
| linux-relibc*- | linux-uclibc*- )
|
| linux-relibc*- | linux-uclibc*- | linux-ohos*- )
|
||||||
;;
|
;;
|
||||||
uclinux-uclibc*- )
|
uclinux-uclibc*- | uclinux-gnu*- )
|
||||||
;;
|
;;
|
||||||
managarm-mlibc*- | managarm-kernel*- )
|
managarm-mlibc*- | managarm-kernel*- )
|
||||||
;;
|
;;
|
||||||
@ -1856,7 +2237,7 @@ case $kernel-$os-$obj in
|
|||||||
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
|
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
kfreebsd*-gnu*- | kopensolaris*-gnu*-)
|
kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
|
||||||
;;
|
;;
|
||||||
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
|
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
|
||||||
;;
|
;;
|
||||||
@ -1864,6 +2245,8 @@ case $kernel-$os-$obj in
|
|||||||
;;
|
;;
|
||||||
os2-emx-)
|
os2-emx-)
|
||||||
;;
|
;;
|
||||||
|
rtmk-nova-)
|
||||||
|
;;
|
||||||
*-eabi*- | *-gnueabi*-)
|
*-eabi*- | *-gnueabi*-)
|
||||||
;;
|
;;
|
||||||
none--*)
|
none--*)
|
||||||
@ -1890,7 +2273,7 @@ case $vendor in
|
|||||||
*-riscix*)
|
*-riscix*)
|
||||||
vendor=acorn
|
vendor=acorn
|
||||||
;;
|
;;
|
||||||
*-sunos*)
|
*-sunos* | *-solaris*)
|
||||||
vendor=sun
|
vendor=sun
|
||||||
;;
|
;;
|
||||||
*-cnk* | *-aix*)
|
*-cnk* | *-aix*)
|
||||||
|
277
configure
vendored
277
configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# 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.51.git.
|
||||||
#
|
#
|
||||||
# Report bugs to <png-mng-implement@lists.sourceforge.net>.
|
# Report bugs to <png-mng-implement@lists.sourceforge.net>.
|
||||||
#
|
#
|
||||||
@ -614,8 +614,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='libpng'
|
PACKAGE_NAME='libpng'
|
||||||
PACKAGE_TARNAME='libpng'
|
PACKAGE_TARNAME='libpng'
|
||||||
PACKAGE_VERSION='1.6.47'
|
PACKAGE_VERSION='1.6.51.git'
|
||||||
PACKAGE_STRING='libpng 1.6.47'
|
PACKAGE_STRING='libpng 1.6.51.git'
|
||||||
PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
|
PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -656,6 +656,8 @@ ac_subst_vars='am__EXEEXT_FALSE
|
|||||||
am__EXEEXT_TRUE
|
am__EXEEXT_TRUE
|
||||||
LTLIBOBJS
|
LTLIBOBJS
|
||||||
LIBOBJS
|
LIBOBJS
|
||||||
|
PNG_RISCV_RVV_FALSE
|
||||||
|
PNG_RISCV_RVV_TRUE
|
||||||
PNG_LOONGARCH_LSX_FALSE
|
PNG_LOONGARCH_LSX_FALSE
|
||||||
PNG_LOONGARCH_LSX_TRUE
|
PNG_LOONGARCH_LSX_TRUE
|
||||||
PNG_POWERPC_VSX_FALSE
|
PNG_POWERPC_VSX_FALSE
|
||||||
@ -858,6 +860,7 @@ enable_mips_mmi
|
|||||||
enable_intel_sse
|
enable_intel_sse
|
||||||
enable_powerpc_vsx
|
enable_powerpc_vsx
|
||||||
enable_loongarch_lsx
|
enable_loongarch_lsx
|
||||||
|
enable_riscv_rvv
|
||||||
'
|
'
|
||||||
ac_precious_vars='build_alias
|
ac_precious_vars='build_alias
|
||||||
host_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.
|
# 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.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
'configure' configures libpng 1.6.47 to adapt to many kinds of systems.
|
'configure' configures libpng 1.6.51.git to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1492,7 +1495,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of libpng 1.6.47:";;
|
short | recursive ) echo "Configuration of libpng 1.6.51.git:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1590,6 +1593,12 @@ Optional Features:
|
|||||||
no/off: disable the optimizations; yes/on: turn on
|
no/off: disable the optimizations; yes/on: turn on
|
||||||
unconditionally. If not specified: determined by the
|
unconditionally. If not specified: determined by the
|
||||||
compiler.
|
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:
|
Optional Packages:
|
||||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||||
@ -1689,7 +1698,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
libpng configure 1.6.47
|
libpng configure 1.6.51.git
|
||||||
generated by GNU Autoconf 2.72
|
generated by GNU Autoconf 2.72
|
||||||
|
|
||||||
Copyright (C) 2023 Free Software Foundation, Inc.
|
Copyright (C) 2023 Free Software Foundation, Inc.
|
||||||
@ -1952,7 +1961,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
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.51.git, which was
|
||||||
generated by GNU Autoconf 2.72. Invocation command line was
|
generated by GNU Autoconf 2.72. Invocation command line was
|
||||||
|
|
||||||
$ $0$ac_configure_args_raw
|
$ $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
|
# dist-xz requires automake 1.11 or later
|
||||||
# 1.12.2 fixes a security issue in 1.11.2 and 1.12.1
|
# 1.12.2 fixes a security issue in 1.11.2 and 1.12.1
|
||||||
# 1.13 is required for parallel tests
|
# 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
|
case `pwd` in
|
||||||
*[\\\"\#\$\&\'\`$am_lf]*)
|
*[\\\"\#\$\&\'\`$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;;
|
as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
|
||||||
esac
|
esac
|
||||||
case $srcdir in
|
case $srcdir in
|
||||||
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
|
*[\\\"\#\$\&\'\`$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;;
|
as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -3433,7 +3446,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='libpng'
|
PACKAGE='libpng'
|
||||||
VERSION='1.6.47'
|
VERSION='1.6.51.git'
|
||||||
|
|
||||||
|
|
||||||
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
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.
|
# 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'
|
||||||
|
|
||||||
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
|
# 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 <conftest.tar" >&5
|
||||||
|
($am__untar <conftest.tar) >&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
|
||||||
|
|
||||||
|
{ 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.51.git
|
||||||
PNGLIB_MAJOR=1
|
PNGLIB_MAJOR=1
|
||||||
PNGLIB_MINOR=6
|
PNGLIB_MINOR=6
|
||||||
PNGLIB_RELEASE=47
|
PNGLIB_RELEASE=51
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -4611,7 +4748,10 @@ _ACEOF
|
|||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
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 ;;
|
unset am_i ;;
|
||||||
esac
|
esac
|
||||||
fi
|
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
|
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:
|
# 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
|
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
|
esac
|
||||||
;;
|
;;
|
||||||
@ -15550,6 +15700,97 @@ else
|
|||||||
fi
|
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 <riscv_vector.h>
|
||||||
|
#include <asm/hwcap.h>
|
||||||
|
#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:${as_lineno-$LINENO}: Extra options for compiler: $PNG_COPTS" >&5
|
||||||
printf "%s\n" "$as_me: Extra options for compiler: $PNG_COPTS" >&6;}
|
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.
|
as_fn_error $? "conditional \"PNG_LOONGARCH_LSX\" was never defined.
|
||||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||||
fi
|
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}"
|
: "${CONFIG_STATUS=./config.status}"
|
||||||
ac_write_fail=0
|
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
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
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.51.git, which was
|
||||||
generated by GNU Autoconf 2.72. Invocation command line was
|
generated by GNU Autoconf 2.72. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
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
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config='$ac_cs_config_escaped'
|
ac_cs_config='$ac_cs_config_escaped'
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
libpng config.status 1.6.47
|
libpng config.status 1.6.51.git
|
||||||
configured by $0, generated by GNU Autoconf 2.72,
|
configured by $0, generated by GNU Autoconf 2.72,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
84
configure.ac
84
configure.ac
@ -25,7 +25,7 @@ AC_PREREQ([2.68])
|
|||||||
|
|
||||||
dnl Version number stuff here:
|
dnl Version number stuff here:
|
||||||
|
|
||||||
AC_INIT([libpng],[1.6.47],[png-mng-implement@lists.sourceforge.net])
|
AC_INIT([libpng],[1.6.51.git],[png-mng-implement@lists.sourceforge.net])
|
||||||
AC_CONFIG_MACRO_DIR([scripts/autoconf])
|
AC_CONFIG_MACRO_DIR([scripts/autoconf])
|
||||||
|
|
||||||
# libpng does not follow GNU file name conventions (hence 'foreign')
|
# 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 AM_PREREQ([1.11.2])
|
||||||
dnl stop configure from automagically running automake
|
dnl stop configure from automagically running automake
|
||||||
|
|
||||||
PNGLIB_VERSION=1.6.47
|
PNGLIB_VERSION=1.6.51.git
|
||||||
PNGLIB_MAJOR=1
|
PNGLIB_MAJOR=1
|
||||||
PNGLIB_MINOR=6
|
PNGLIB_MINOR=6
|
||||||
PNGLIB_RELEASE=47
|
PNGLIB_RELEASE=51
|
||||||
|
|
||||||
dnl End of version number stuff
|
dnl End of version number stuff
|
||||||
|
|
||||||
@ -343,6 +343,9 @@ AC_ARG_ENABLE([hardware-optimizations],
|
|||||||
enable_loongarch_lsx=no
|
enable_loongarch_lsx=no
|
||||||
AC_DEFINE([PNG_LOONGARCH_LSX_OPT], [0],
|
AC_DEFINE([PNG_LOONGARCH_LSX_OPT], [0],
|
||||||
[Disable LOONGARCH_LSX optimizations])
|
[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:
|
# allow enabling hardware optimization on any system:
|
||||||
@ -375,6 +378,11 @@ AC_ARG_ENABLE([hardware-optimizations],
|
|||||||
AC_DEFINE([PNG_LOONGARCH_LSX_OPT], [1],
|
AC_DEFINE([PNG_LOONGARCH_LSX_OPT], [1],
|
||||||
[Enable LOONGARCH_LSX optimizations])
|
[Enable LOONGARCH_LSX optimizations])
|
||||||
;;
|
;;
|
||||||
|
riscv64)
|
||||||
|
enable_riscv_rvv=yes
|
||||||
|
AC_DEFINE([PNG_RISCV_RVV_OPT], [2],
|
||||||
|
[Enable RISC-V Vector optimizations])
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac])
|
esac])
|
||||||
@ -661,6 +669,76 @@ AM_CONDITIONAL([PNG_LOONGARCH_LSX],
|
|||||||
*) test "$enable_loongarch_lsx" != '' ;;
|
*) test "$enable_loongarch_lsx" != '' ;;
|
||||||
esac])
|
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 <riscv_vector.h>
|
||||||
|
#include <asm/hwcap.h>
|
||||||
|
#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]])
|
AC_MSG_NOTICE([[Extra options for compiler: $PNG_COPTS]])
|
||||||
|
|
||||||
# Config files, substituting as above
|
# Config files, substituting as above
|
||||||
|
13
contrib/conftest/read-full.dfa
Normal file
13
contrib/conftest/read-full.dfa
Normal file
@ -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
|
13
contrib/conftest/write-full.dfa
Normal file
13
contrib/conftest/write-full.dfa
Normal file
@ -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
|
143
contrib/examples/.clang-format
Normal file
143
contrib/examples/.clang-format
Normal file
@ -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
|
||||||
|
...
|
@ -26,8 +26,9 @@
|
|||||||
|
|
||||||
#include <png.h>
|
#include <png.h>
|
||||||
|
|
||||||
#if defined(PNG_READ_SUPPORTED) && defined(PNG_STDIO_SUPPORTED) && \
|
#if !defined(PNG_iCCP_SUPPORTED) || !defined(PNG_READ_SUPPORTED)
|
||||||
defined (PNG_iCCP_SUPPORTED)
|
#error This program requires libpng supporting the iCCP chunk and the read API
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static int verbose = 1;
|
static int verbose = 1;
|
||||||
@ -36,7 +37,8 @@ static png_byte no_profile[] = "no profile";
|
|||||||
static png_bytep
|
static png_bytep
|
||||||
extract(FILE *fp, png_uint_32 *proflen)
|
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_infop info_ptr = NULL;
|
||||||
png_bytep result = NULL;
|
png_bytep result = NULL;
|
||||||
|
|
||||||
@ -161,6 +163,9 @@ extract_one_file(const char *filename)
|
|||||||
else
|
else
|
||||||
fprintf(stderr, "%s: could not open file\n", filename);
|
fprintf(stderr, "%s: could not open file\n", filename);
|
||||||
|
|
||||||
|
if (fp != NULL)
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,4 +187,3 @@ main(int argc, char **argv)
|
|||||||
/* Exit code is true if any extract succeeds */
|
/* Exit code is true if any extract succeeds */
|
||||||
return extracted == 0;
|
return extracted == 0;
|
||||||
}
|
}
|
||||||
#endif /* READ && STDIO && iCCP */
|
|
||||||
|
@ -15,8 +15,8 @@
|
|||||||
* images. Normally you would call png_set_interlace_handling() to have libpng
|
* images. Normally you would call png_set_interlace_handling() to have libpng
|
||||||
* deal with the interlace for you, but that obliges you to buffer half of the
|
* deal with the interlace for you, but that obliges you to buffer half of the
|
||||||
* image to assemble the interlaced rows. In this code
|
* image to assemble the interlaced rows. In this code
|
||||||
* png_set_interlace_handling() is not called and, instead, the code handles the
|
* png_set_interlace_handling() is not called and, instead, the code handles
|
||||||
* interlace passes directly looking for the required pixel.
|
* the interlace passes directly looking for the required pixel.
|
||||||
*/
|
*/
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -27,16 +27,19 @@
|
|||||||
*/
|
*/
|
||||||
#include "../../png.h"
|
#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. */
|
/* Return component 'c' of pixel 'x' from the given row. */
|
||||||
static unsigned int
|
static unsigned int
|
||||||
component(png_const_bytep row, png_uint_32 x, unsigned int c,
|
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
|
/* 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
|
* 2^37 bits wide (for a 64-bit pixel - the largest possible) and hence
|
||||||
* bytes wide. Since the row fitted into memory, however, the following must
|
* 2^34 bytes wide. Since the row fitted into memory, the following must
|
||||||
* work:
|
* work:
|
||||||
*/
|
*/
|
||||||
png_uint_32 bit_offset_hi = bit_depth * ((x >> 6) * channels);
|
png_uint_32 bit_offset_hi = bit_depth * ((x >> 6) * channels);
|
||||||
@ -47,8 +50,8 @@ component(png_const_bytep row, png_uint_32 x, unsigned int c,
|
|||||||
bit_offset_lo &= 0x07;
|
bit_offset_lo &= 0x07;
|
||||||
|
|
||||||
/* PNG pixels are packed into bytes to put the first pixel in the highest
|
/* 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
|
* bits of the byte, and into two bytes for 16-bit values with the high
|
||||||
* first, so:
|
* 8 bits first, so:
|
||||||
*/
|
*/
|
||||||
switch (bit_depth)
|
switch (bit_depth)
|
||||||
{
|
{
|
||||||
@ -92,22 +95,24 @@ print_pixel(png_structp png_ptr, png_infop info_ptr, png_const_bytep row,
|
|||||||
int num_palette = 0;
|
int num_palette = 0;
|
||||||
|
|
||||||
if ((png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette) &
|
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;
|
png_bytep trans_alpha = NULL;
|
||||||
int num_trans = 0;
|
int num_trans = 0;
|
||||||
if ((png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans,
|
if ((png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans,
|
||||||
NULL) & PNG_INFO_tRNS) && num_trans > 0 &&
|
NULL) & PNG_INFO_tRNS) &&
|
||||||
trans_alpha != NULL)
|
(num_trans > 0) &&
|
||||||
|
(trans_alpha != NULL))
|
||||||
printf("INDEXED %u = %d %d %d %d\n", index,
|
printf("INDEXED %u = %d %d %d %d\n", index,
|
||||||
palette[index].red, palette[index].green,
|
palette[index].red, palette[index].green,
|
||||||
palette[index].blue,
|
palette[index].blue,
|
||||||
index < num_trans ? trans_alpha[index] : 255);
|
index < num_trans ? trans_alpha[index] : 255);
|
||||||
|
|
||||||
else /* no transparency */
|
else /* no transparency */
|
||||||
printf("INDEXED %u = %d %d %d\n", index,
|
printf("INDEXED %u = %d %d %d\n", index, palette[index].red,
|
||||||
palette[index].red, palette[index].green,
|
palette[index].green, palette[index].blue);
|
||||||
palette[index].blue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -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, <setjmp.h> based, libpng error handling
|
/* This program uses the default, <setjmp.h> based, libpng error handling
|
||||||
* mechanism, therefore any local variable that exists before the call to
|
* mechanism, therefore any local variable that exists before the call to
|
||||||
@ -163,8 +169,8 @@ int main(int argc, const char **argv)
|
|||||||
* writes error messages to stderr. Creating the png_struct is a
|
* writes error messages to stderr. Creating the png_struct is a
|
||||||
* little tricky; just copy the following code.
|
* little tricky; just copy the following code.
|
||||||
*/
|
*/
|
||||||
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
|
png_structp png_ptr =
|
||||||
NULL, NULL, NULL);
|
png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||||
|
|
||||||
if (png_ptr != NULL)
|
if (png_ptr != NULL)
|
||||||
{
|
{
|
||||||
@ -184,11 +190,11 @@ int main(int argc, const char **argv)
|
|||||||
compression_method, filter_method;
|
compression_method, filter_method;
|
||||||
png_bytep row_tmp;
|
png_bytep row_tmp;
|
||||||
|
|
||||||
/* Now associate the recently opened (FILE*) with the default
|
/* Now associate the recently opened FILE object with the
|
||||||
* libpng initialization functions. Sometimes libpng is
|
* default libpng initialization functions. Sometimes libpng
|
||||||
* compiled without stdio support (it can be difficult to do
|
* is compiled without stdio support (it can be difficult to
|
||||||
* in some environments); in that case you will have to write
|
* do in some environments); in that case you will have to
|
||||||
* your own read callback to read data from the (FILE*).
|
* write your own read callback to read data from the stream.
|
||||||
*/
|
*/
|
||||||
png_init_io(png_ptr, f);
|
png_init_io(png_ptr, f);
|
||||||
|
|
||||||
@ -202,16 +208,16 @@ int main(int argc, const char **argv)
|
|||||||
* space. In this case png_malloc is used - it will not
|
* space. In this case png_malloc is used - it will not
|
||||||
* return if memory isn't available.
|
* return if memory isn't available.
|
||||||
*/
|
*/
|
||||||
row = png_malloc(png_ptr, png_get_rowbytes(png_ptr,
|
row =
|
||||||
info_ptr));
|
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.
|
* to a local here - just use row for the png_free below.
|
||||||
*/
|
*/
|
||||||
row_tmp = row;
|
row_tmp = row;
|
||||||
|
|
||||||
/* All the information we need is in the header is returned by
|
/* All the information we need is in the header returned by
|
||||||
* png_get_IHDR, if this fails we can now use 'png_error' to
|
* png_get_IHDR. If this fails, we can use 'png_error' to
|
||||||
* signal the error and return control to the setjmp above.
|
* signal the error and return control to the setjmp above.
|
||||||
*/
|
*/
|
||||||
if (png_get_IHDR(png_ptr, info_ptr, &width, &height,
|
if (png_get_IHDR(png_ptr, info_ptr, &width, &height,
|
||||||
@ -299,19 +305,27 @@ int main(int argc, const char **argv)
|
|||||||
* are, of course, much better ways of doing this
|
* are, of course, much better ways of doing this
|
||||||
* than using a for loop:
|
* than using a for loop:
|
||||||
*/
|
*/
|
||||||
if (y == py) for (px = xstart, ppx = 0;
|
if (y == py)
|
||||||
px < width; px += xstep, ++ppx) if (x == px)
|
|
||||||
{
|
{
|
||||||
/* 'ppx' is the index of the pixel in the row
|
for (px = xstart, ppx = 0;
|
||||||
* buffer.
|
px < width;
|
||||||
|
px += xstep, ++ppx)
|
||||||
|
{
|
||||||
|
if (x == px)
|
||||||
|
{
|
||||||
|
/* 'ppx' is the index of the pixel in the
|
||||||
|
* row buffer.
|
||||||
*/
|
*/
|
||||||
print_pixel(png_ptr, info_ptr, row_tmp, ppx);
|
print_pixel(png_ptr, info_ptr, row_tmp,
|
||||||
|
ppx);
|
||||||
|
|
||||||
/* Now terminate the loops early - we have
|
/* Now terminate the loops early - we have
|
||||||
* found and handled the required data.
|
* found and handled the required data.
|
||||||
*/
|
*/
|
||||||
goto pass_loop_end;
|
goto pass_loop_end;
|
||||||
} /* x loop */
|
} /* x loop */
|
||||||
|
}
|
||||||
|
}
|
||||||
} /* y loop */
|
} /* y loop */
|
||||||
} /* pass loop */
|
} /* pass loop */
|
||||||
|
|
||||||
@ -323,7 +337,6 @@ int main(int argc, const char **argv)
|
|||||||
|
|
||||||
else
|
else
|
||||||
png_error(png_ptr, "pngpixel: png_get_IHDR failed");
|
png_error(png_ptr, "pngpixel: png_get_IHDR failed");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -349,7 +362,8 @@ int main(int argc, const char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
fprintf(stderr, "pngpixel: out of memory allocating png_info\n");
|
fprintf(stderr,
|
||||||
|
"pngpixel: out of memory allocating png_info\n");
|
||||||
|
|
||||||
png_destroy_read_struct(&png_ptr, NULL, NULL);
|
png_destroy_read_struct(&png_ptr, NULL, NULL);
|
||||||
}
|
}
|
||||||
@ -368,4 +382,3 @@ int main(int argc, const char **argv)
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#endif /* READ && SEQUENTIAL_READ */
|
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
* Read a PNG and write it out in a fixed format, using the 'simplified API'
|
* Read a PNG and write it out in a fixed format, using the 'simplified API'
|
||||||
* that was introduced in libpng-1.6.0.
|
* that was introduced in libpng-1.6.0.
|
||||||
*
|
*
|
||||||
* This sample code is just the code from the top of 'example.c' with some error
|
* This sample code is just the code from 'example.c' with some error handling
|
||||||
* handling added. See example.c for more comments.
|
* added. See example.c in the top-level libpng directory for more comments.
|
||||||
*/
|
*/
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -20,10 +20,15 @@
|
|||||||
* ensure the code picks up the local libpng implementation:
|
* ensure the code picks up the local libpng implementation:
|
||||||
*/
|
*/
|
||||||
#include "../../png.h"
|
#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;
|
int result = 1;
|
||||||
|
|
||||||
@ -49,11 +54,11 @@ int main(int argc, const char **argv)
|
|||||||
if (buffer != NULL)
|
if (buffer != NULL)
|
||||||
{
|
{
|
||||||
if (png_image_finish_read(&image, NULL /*background*/, buffer,
|
if (png_image_finish_read(&image, NULL /*background*/, buffer,
|
||||||
0/*row_stride*/, NULL/*colormap for PNG_FORMAT_FLAG_COLORMAP */))
|
0 /*row_stride*/, NULL /*colormap */))
|
||||||
{
|
{
|
||||||
if (png_image_write_to_file(&image, argv[2],
|
if (png_image_write_to_file(
|
||||||
0/*convert_to_8bit*/, buffer, 0/*row_stride*/,
|
&image, argv[2], 0 /*convert_to_8bit*/, buffer,
|
||||||
NULL/*colormap*/))
|
0 /*row_stride*/, NULL /*colormap*/))
|
||||||
result = 0;
|
result = 0;
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -93,4 +98,3 @@ int main(int argc, const char **argv)
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#endif /* READ && WRITE */
|
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
* United States.
|
* United States.
|
||||||
*
|
*
|
||||||
* Read several PNG files, which should have an alpha channel or transparency
|
* 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
|
* information, and composite them together to produce one or more 16-bit
|
||||||
* RGBA intermediates. This involves doing the correct 'over' composition to
|
* linear RGBA intermediates. This involves doing the 'over' compositing
|
||||||
* combine the alpha channels and corresponding data.
|
* operation to combine the alpha channels and corresponding data.
|
||||||
*
|
*
|
||||||
* Finally read an output (background) PNG using the 24-bit RGB format (the
|
* 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
|
* 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
|
* 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
|
* 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,
|
* 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
|
* be regarded as being layered one on top of the other with the first
|
||||||
* on the command line) being at the bottom and the last on the top.
|
* (leftmost on the command line) being at the bottom and the last on the top.
|
||||||
*/
|
*/
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -44,10 +44,13 @@
|
|||||||
*/
|
*/
|
||||||
#include "../../png.h"
|
#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
|
#define sprite_name_chars 15
|
||||||
struct sprite {
|
struct sprite
|
||||||
|
{
|
||||||
FILE *file;
|
FILE *file;
|
||||||
png_uint_16p buffer;
|
png_uint_16p buffer;
|
||||||
unsigned int width;
|
unsigned int width;
|
||||||
@ -59,18 +62,21 @@ struct sprite {
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
int main(void) {
|
int
|
||||||
|
main(void)
|
||||||
|
{
|
||||||
double err = 0;
|
double err = 0;
|
||||||
unsigned int xerr = 0;
|
unsigned int xerr = 0;
|
||||||
unsigned int r = 32769;
|
unsigned int r = 32769;
|
||||||
{
|
|
||||||
unsigned int x = 0;
|
unsigned int x = 0;
|
||||||
|
|
||||||
do {
|
do
|
||||||
|
{
|
||||||
unsigned int t = x + (x >> 16) /*+ (x >> 31)*/ + r;
|
unsigned int t = x + (x >> 16) /*+ (x >> 31)*/ + r;
|
||||||
double v = x, errtest;
|
double v = x, errtest;
|
||||||
|
|
||||||
if (t < x) {
|
if (t < x)
|
||||||
|
{
|
||||||
fprintf(stderr, "overflow: %u+%u -> %u\n", x, r, t);
|
fprintf(stderr, "overflow: %u+%u -> %u\n", x, r, t);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -80,18 +86,19 @@ int main(void) {
|
|||||||
t >>= 16;
|
t >>= 16;
|
||||||
errtest -= t;
|
errtest -= t;
|
||||||
|
|
||||||
if (errtest > err) {
|
if (errtest > err)
|
||||||
|
{
|
||||||
err = errtest;
|
err = errtest;
|
||||||
xerr = x;
|
xerr = x;
|
||||||
|
|
||||||
if (errtest >= .5) {
|
if (errtest >= .5)
|
||||||
|
{
|
||||||
fprintf(stderr, "error: %u/65535 = %f, not %u, error %f\n",
|
fprintf(stderr, "error: %u/65535 = %f, not %u, error %f\n",
|
||||||
x, v, t, errtest);
|
x, v, t, errtest);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (++x <= 65535U * 65535U);
|
} while (++x <= 65535U * 65535U);
|
||||||
}
|
|
||||||
|
|
||||||
printf("error %f @ %u\n", err, xerr);
|
printf("error %f @ %u\n", err, xerr);
|
||||||
|
|
||||||
@ -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
|
/* Check for an x or y offset that pushes any part of the image beyond the
|
||||||
* right or bottom of the sprite:
|
* right or bottom of the sprite:
|
||||||
*/
|
*/
|
||||||
if ((y_offset < 0 || (unsigned)/*SAFE*/y_offset < sprite->height) &&
|
if ((y_offset < 0 || /*SAFE*/ (unsigned)y_offset < sprite->height) &&
|
||||||
(x_offset < 0 || (unsigned)/*SAFE*/x_offset < sprite->width))
|
(x_offset < 0 || /*SAFE*/ (unsigned)x_offset < sprite->width))
|
||||||
{
|
{
|
||||||
unsigned int y = 0;
|
unsigned int y = 0;
|
||||||
|
|
||||||
@ -172,15 +179,15 @@ sprite_op(const struct sprite *sprite, int x_offset, int y_offset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
out_pixel[0] = in_pixel[0],
|
{
|
||||||
out_pixel[1] = in_pixel[1],
|
out_pixel[0] = in_pixel[0];
|
||||||
out_pixel[2] = in_pixel[2],
|
out_pixel[1] = in_pixel[1];
|
||||||
|
out_pixel[2] = in_pixel[2];
|
||||||
out_pixel[3] = in_pixel[3];
|
out_pixel[3] = in_pixel[3];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (++x < image->width);
|
} while (++x < image->width);
|
||||||
}
|
} while (++y < image->height);
|
||||||
while (++y < image->height);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,8 +232,7 @@ create_sprite(struct sprite *sprite, int *argc, const char ***argv)
|
|||||||
if (buffer != NULL)
|
if (buffer != NULL)
|
||||||
{
|
{
|
||||||
if (png_image_finish_read(&image, NULL /*background*/, buffer,
|
if (png_image_finish_read(&image, NULL /*background*/, buffer,
|
||||||
0/*row_stride*/,
|
0 /*row_stride*/, NULL /*colormap*/))
|
||||||
NULL/*colormap for PNG_FORMAT_FLAG_COLORMAP*/))
|
|
||||||
{
|
{
|
||||||
/* This is the place where the Porter-Duff 'Over' operator
|
/* This is the place where the Porter-Duff 'Over' operator
|
||||||
* needs to be done by this code. In fact, any image
|
* needs to be done by this code. In fact, any image
|
||||||
@ -291,7 +297,8 @@ create_sprite(struct sprite *sprite, int *argc, const char ***argv)
|
|||||||
save.colormap_entries = 0;
|
save.colormap_entries = 0;
|
||||||
|
|
||||||
if (png_image_write_to_stdio(&save, sprite->file, 1 /*convert_to_8_bit*/,
|
if (png_image_write_to_stdio(&save, sprite->file, 1 /*convert_to_8_bit*/,
|
||||||
sprite->buffer, 0/*row_stride*/, NULL/*colormap*/))
|
sprite->buffer, 0 /*row_stride*/,
|
||||||
|
NULL /*colormap*/))
|
||||||
{
|
{
|
||||||
/* Success; the buffer is no longer needed: */
|
/* Success; the buffer is no longer needed: */
|
||||||
free(sprite->buffer);
|
free(sprite->buffer);
|
||||||
@ -305,7 +312,8 @@ create_sprite(struct sprite *sprite, int *argc, const char ***argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
fprintf(stderr, "simpleover: sprite %s: could not allocate tmpfile: %s\n",
|
fprintf(stderr,
|
||||||
|
"simpleover: sprite %s: could not allocate tmpfile: %s\n",
|
||||||
sprite->name, strerror(errno));
|
sprite->name, strerror(errno));
|
||||||
|
|
||||||
return 0; /* fail */
|
return 0; /* fail */
|
||||||
@ -334,8 +342,8 @@ add_sprite(png_imagep output, png_bytep out_buf, struct sprite *sprite,
|
|||||||
* will fit.
|
* will fit.
|
||||||
*/
|
*/
|
||||||
if (x < 0 || y < 0 ||
|
if (x < 0 || y < 0 ||
|
||||||
(unsigned)/*SAFE*/x >= output->width ||
|
/*SAFE*/ (unsigned)x >= output->width ||
|
||||||
(unsigned)/*SAFE*/y >= output->height ||
|
/*SAFE*/ (unsigned)y >= output->height ||
|
||||||
sprite->width > output->width - x ||
|
sprite->width > output->width - x ||
|
||||||
sprite->height > output->height - y)
|
sprite->height > output->height - y)
|
||||||
{
|
{
|
||||||
@ -359,10 +367,10 @@ add_sprite(png_imagep output, png_bytep out_buf, struct sprite *sprite,
|
|||||||
{
|
{
|
||||||
in.format = PNG_FORMAT_RGB; /* force compose */
|
in.format = PNG_FORMAT_RGB; /* force compose */
|
||||||
|
|
||||||
if (png_image_finish_read(&in, NULL/*background*/,
|
if (png_image_finish_read(
|
||||||
|
&in, NULL /*background*/,
|
||||||
out_buf + (y * output->width + x) * 3 /*RGB*/,
|
out_buf + (y * output->width + x) * 3 /*RGB*/,
|
||||||
output->width*3/*row_stride*/,
|
output->width * 3 /*row_stride*/, NULL /*colormap*/))
|
||||||
NULL/*colormap for PNG_FORMAT_FLAG_COLORMAP*/))
|
|
||||||
{
|
{
|
||||||
++*argv, --*argc;
|
++*argv, --*argc;
|
||||||
continue;
|
continue;
|
||||||
@ -412,12 +420,14 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc,
|
|||||||
sprites[nsprites].width = sprites[nsprites].height = 0;
|
sprites[nsprites].width = sprites[nsprites].height = 0;
|
||||||
sprites[nsprites].name[0] = 0;
|
sprites[nsprites].name[0] = 0;
|
||||||
|
|
||||||
n = sscanf(argv[0], "--sprite=%u,%u,%" str(sprite_name_chars) "s%c",
|
n = sscanf(argv[0],
|
||||||
|
"--sprite=%u,%u,%" str(sprite_name_chars) "s%c",
|
||||||
&sprites[nsprites].width, &sprites[nsprites].height,
|
&sprites[nsprites].width, &sprites[nsprites].height,
|
||||||
sprites[nsprites].name, &tombstone);
|
sprites[nsprites].name, &tombstone);
|
||||||
|
|
||||||
if ((n == 2 || n == 3) &&
|
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;
|
size_t buf_size, tmp;
|
||||||
|
|
||||||
@ -466,7 +476,8 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
fprintf(stderr, "simpleover: %s: invalid sprite (%u,%u)\n",
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -489,7 +500,8 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc,
|
|||||||
{
|
{
|
||||||
if (strcmp(sprites[isprite].name, name) == 0)
|
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 */
|
goto out; /* error in add_sprite */
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -498,7 +510,8 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc,
|
|||||||
|
|
||||||
if (isprite < 0) /* sprite not found */
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -526,7 +539,8 @@ out:
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, const char **argv)
|
int
|
||||||
|
main(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
int result = 1; /* default to fail */
|
int result = 1; /* default to fail */
|
||||||
|
|
||||||
@ -558,7 +572,7 @@ int main(int argc, const char **argv)
|
|||||||
png_color background = {0, 0xff, 0}; /* fully saturated green */
|
png_color background = {0, 0xff, 0}; /* fully saturated green */
|
||||||
|
|
||||||
if (png_image_finish_read(&image, &background, buffer,
|
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
|
/* At this point png_image_finish_read has cleaned up the
|
||||||
* allocated data in png_image, and only the buffer needs to be
|
* 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:
|
* 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: */
|
/* Write the output: */
|
||||||
if ((output != NULL &&
|
if ((output != NULL &&
|
||||||
png_image_write_to_file(&image, output,
|
png_image_write_to_file(
|
||||||
0/*convert_to_8bit*/, buffer, 0/*row_stride*/,
|
&image, output, 0 /*convert_to_8bit*/, buffer,
|
||||||
NULL/*colormap*/)) ||
|
0 /*row_stride*/, NULL /*colormap*/)) ||
|
||||||
(output == NULL &&
|
(output == NULL &&
|
||||||
png_image_write_to_stdio(&image, stdout,
|
png_image_write_to_stdio(
|
||||||
0/*convert_to_8bit*/, buffer, 0/*row_stride*/,
|
&image, stdout, 0 /*convert_to_8bit*/, buffer,
|
||||||
NULL/*colormap*/)))
|
0 /*row_stride*/, NULL /*colormap*/)))
|
||||||
result = 0;
|
result = 0;
|
||||||
|
|
||||||
else
|
else
|
||||||
fprintf(stderr, "simpleover: write %s: %s\n",
|
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 */
|
/* else simpleover_process writes an error message */
|
||||||
@ -617,7 +633,8 @@ int main(int argc, const char **argv)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Usage message */
|
/* Usage message */
|
||||||
fprintf(stderr,
|
fprintf(
|
||||||
|
stderr,
|
||||||
"simpleover: usage: simpleover background.png [output.png]\n"
|
"simpleover: usage: simpleover background.png [output.png]\n"
|
||||||
" Output 'background.png' as a 24-bit RGB PNG file in '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"
|
" 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"
|
" --sprite=width,height,name {[--at=x,y] {sprite.png}}\n"
|
||||||
" Produce a transparent sprite of size (width,height) and with\n"
|
" Produce a transparent sprite of size (width,height) and with\n"
|
||||||
" name 'name'.\n"
|
" name 'name'.\n"
|
||||||
" For each sprite.png composite it using a Porter-Duff 'Over'\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"
|
" 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"
|
" Input PNGs will be truncated to the area of the sprite.\n"
|
||||||
"\n"
|
"\n"
|
||||||
" --add='name' {x,y}\n"
|
" --add='name' {x,y}\n"
|
||||||
" Optionally, before output, composite a sprite, 'name', which\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"
|
" offset (x,y) in the output image. Each sprite must fit\n"
|
||||||
" completely within the output image.\n"
|
" completely within the output image.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -645,4 +662,3 @@ int main(int argc, const char **argv)
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#endif /* SIMPLIFIED_READ */
|
|
||||||
|
@ -595,7 +595,8 @@ newimage(Image *image)
|
|||||||
memset(image, 0, sizeof *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
|
static void
|
||||||
resetimage(Image *image)
|
resetimage(Image *image)
|
||||||
|
85
contrib/riscv-rvv/README
Normal file
85
contrib/riscv-rvv/README
Normal file
@ -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.
|
36
contrib/riscv-rvv/linux.c
Normal file
36
contrib/riscv-rvv/linux.c
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/* contrib/riscv-rvv/linux.c
|
||||||
|
*
|
||||||
|
* Copyright (c) 2023 Google LLC
|
||||||
|
* Written by Dragoș Tiselice <dtiselice@google.com>, 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 <stdio.h> and it assumes that /proc/cpuinfo is never localized.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(__linux__)
|
||||||
|
#include <asm/hwcap.h>
|
||||||
|
#include <sys/auxv.h>
|
||||||
|
#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
|
||||||
|
}
|
@ -32,7 +32,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if PNG_LIBPNG_VER < 10603 /* 1.6.3 */
|
#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
|
#endif
|
||||||
|
|
||||||
#ifdef PNG_SETJMP_SUPPORTED
|
#ifdef PNG_SETJMP_SUPPORTED
|
||||||
@ -68,7 +68,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef PNG_MAXIMUM_INFLATE_WINDOW
|
#ifndef PNG_MAXIMUM_INFLATE_WINDOW
|
||||||
# error "pngfix not supported in this libpng version"
|
# error pngfix requires libpng with PNG_MAXIMUM_INFLATE_WINDOW supported
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ZLIB_VERNUM >= 0x1240
|
#if ZLIB_VERNUM >= 0x1240
|
||||||
|
8
depcomp
8
depcomp
@ -1,9 +1,9 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# depcomp - compile a program generating dependencies as side-effects
|
# 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
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -784,9 +784,9 @@ exit 0
|
|||||||
# Local Variables:
|
# Local Variables:
|
||||||
# mode: shell-script
|
# mode: shell-script
|
||||||
# sh-indentation: 2
|
# 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-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%Y-%02m-%02d.%02H"
|
||||||
# time-stamp-time-zone: "UTC0"
|
# time-stamp-time-zone: "UTC0"
|
||||||
# time-stamp-end: "; # UTC"
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
12
example.c
12
example.c
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
/* example.c - an example of using libpng
|
/* example.c - an example of using libpng
|
||||||
*
|
*
|
||||||
* Maintained 2018-2024 Cosmin Truta
|
* Maintained 2018-2025 Cosmin Truta
|
||||||
* Maintained 1998-2016 Glenn Randers-Pehrson
|
* Maintained 1998-2016 Glenn Randers-Pehrson
|
||||||
* Maintained 1996-1997 Andreas Dilger
|
* Maintained 1996-1997 Andreas Dilger
|
||||||
* Written 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* Written 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
@ -179,11 +179,11 @@ int main(int argc, const char **argv)
|
|||||||
* components.
|
* components.
|
||||||
*
|
*
|
||||||
* You do not have to read directly from a file. You can read from memory or,
|
* You do not have to read directly from a file. You can read from memory or,
|
||||||
* on systems that support it, from a <stdio.h> FILE*. This is controlled by
|
* on systems that support <stdio.h>, from a FILE object. This is controlled
|
||||||
* the particular png_image_read_from_ function you call at the start.
|
* by the particular png_image_begin_read_from_ function you call at the start.
|
||||||
* Likewise, on write, you can write to a FILE* if your system supports it.
|
* Likewise, on write, you can write to a FILE object if your system supports
|
||||||
* Check the macro PNG_STDIO_SUPPORTED to see if stdio support has been
|
* <stdio.h>. The macro PNG_STDIO_SUPPORTED indicates if stdio is available
|
||||||
* included in your libpng build.
|
* and accessible from your libpng build.
|
||||||
*
|
*
|
||||||
* If you read 16-bit (PNG_FORMAT_FLAG_LINEAR) data, you may need to write it
|
* 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
|
* in the 8-bit format for display. You do this by setting the convert_to_8bit
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# install - install a program, script, or datafile
|
# 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
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
@ -533,9 +533,9 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Local variables:
|
# 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-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%Y-%02m-%02d.%02H"
|
||||||
# time-stamp-time-zone: "UTC0"
|
# time-stamp-time-zone: "UTC0"
|
||||||
# time-stamp-end: "; # UTC"
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
@ -9,7 +9,7 @@ libpng-manual.txt - A description on how to use and modify libpng
|
|||||||
|
|
||||||
Based on:
|
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
|
Updated and distributed by Cosmin Truta
|
||||||
Copyright (c) 2018-2025 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
|
of reducing the amount of time and effort it takes to support the PNG
|
||||||
file format in application programs.
|
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
|
||||||
|
<https://www.w3.org/TR/2025/REC-png-3-20250624/>.
|
||||||
|
|
||||||
|
The PNG specification (Second Edition), November 2003, is available as
|
||||||
a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2004 (E)) at
|
a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2004 (E)) at
|
||||||
<https://www.w3.org/TR/2003/REC-PNG-20031110/>.
|
<https://www.w3.org/TR/2003/REC-PNG-20031110/>.
|
||||||
The W3C and ISO documents have identical technical content.
|
The W3C and ISO documents have identical technical content.
|
||||||
|
|
||||||
The PNG-1.2 specification is available at
|
The PNG-1.2 specification is available at
|
||||||
<https://png-mng.sourceforge.io/pub/png/spec/1.2/>.
|
<https://www.libpng.org/pub/png/spec/1.2/>.
|
||||||
It is technically equivalent
|
It is technically equivalent to the PNG specification (Second Edition)
|
||||||
to the PNG specification (second edition) but has some additional material.
|
but has some additional material.
|
||||||
|
|
||||||
The PNG-1.0 specification is available as RFC 2083 at
|
The PNG-1.0 specification is available as RFC 2083 at
|
||||||
<https://png-mng.sourceforge.io/pub/png/spec/1.0/> and as a
|
<https://www.libpng.org/pub/png/spec/1.0/> and as a
|
||||||
W3C Recommendation at <https://www.w3.org/TR/REC-png-961001>.
|
W3C Recommendation at <https://www.w3.org/TR/REC-png-961001>.
|
||||||
|
|
||||||
Some additional chunks are described in the special-purpose public chunks
|
Some additional chunks are described in the special-purpose public chunks
|
||||||
@ -4164,7 +4168,7 @@ be written:
|
|||||||
int convert_to_8_bit, const void *buffer,
|
int convert_to_8_bit, const void *buffer,
|
||||||
png_int_32 row_stride, const void *colormap)
|
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
|
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
|
(png_uint_16) data then setting convert_to_8_bit will cause the output to be
|
||||||
|
22
libpng.3
22
libpng.3
@ -1,6 +1,6 @@
|
|||||||
.TH LIBPNG 3 "February 18, 2025"
|
.TH LIBPNG 3 "July 1, 2025"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.47
|
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.50
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
\fB#include <png.h>\fP
|
\fB#include <png.h>\fP
|
||||||
@ -528,7 +528,7 @@ libpng-manual.txt - A description on how to use and modify libpng
|
|||||||
|
|
||||||
Based on:
|
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
|
Updated and distributed by Cosmin Truta
|
||||||
Copyright (c) 2018-2025 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
|
of reducing the amount of time and effort it takes to support the PNG
|
||||||
file format in application programs.
|
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
|
||||||
|
<https://www.w3.org/TR/2025/REC-png-3-20250624/>.
|
||||||
|
|
||||||
|
The PNG specification (Second Edition), November 2003, is available as
|
||||||
a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2004 (E)) at
|
a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2004 (E)) at
|
||||||
<https://www.w3.org/TR/2003/REC-PNG-20031110/>.
|
<https://www.w3.org/TR/2003/REC-PNG-20031110/>.
|
||||||
The W3C and ISO documents have identical technical content.
|
The W3C and ISO documents have identical technical content.
|
||||||
|
|
||||||
The PNG-1.2 specification is available at
|
The PNG-1.2 specification is available at
|
||||||
<https://png-mng.sourceforge.io/pub/png/spec/1.2/>.
|
<https://www.libpng.org/pub/png/spec/1.2/>.
|
||||||
It is technically equivalent
|
It is technically equivalent to the PNG specification (Second Edition)
|
||||||
to the PNG specification (second edition) but has some additional material.
|
but has some additional material.
|
||||||
|
|
||||||
The PNG-1.0 specification is available as RFC 2083 at
|
The PNG-1.0 specification is available as RFC 2083 at
|
||||||
<https://png-mng.sourceforge.io/pub/png/spec/1.0/> and as a
|
<https://www.libpng.org/pub/png/spec/1.0/> and as a
|
||||||
W3C Recommendation at <https://www.w3.org/TR/REC-png-961001>.
|
W3C Recommendation at <https://www.w3.org/TR/REC-png-961001>.
|
||||||
|
|
||||||
Some additional chunks are described in the special-purpose public chunks
|
Some additional chunks are described in the special-purpose public chunks
|
||||||
@ -4683,7 +4687,7 @@ be written:
|
|||||||
int convert_to_8_bit, const void *buffer,
|
int convert_to_8_bit, const void *buffer,
|
||||||
png_int_32 row_stride, const void *colormap)
|
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
|
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
|
(png_uint_16) data then setting convert_to_8_bit will cause the output to be
|
||||||
|
21
libpngpf.3
21
libpngpf.3
@ -1,24 +1,17 @@
|
|||||||
.TH LIBPNGPF 3 "February 18, 2025"
|
.TH LIBPNGPF 3 "July 1, 2025"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.47
|
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.50
|
||||||
(private functions)
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
\fB#include \fI"pngpriv.h"
|
\fB#include "pngpriv.h"\fP
|
||||||
|
|
||||||
\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.
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
The functions previously listed here are used privately by libpng and are not
|
As of libpng version 1.5.1, this manual is no longer maintained. The private
|
||||||
available for use by applications. They are not "exported" to applications
|
function prototypes, declared in private header files, should not be accessed
|
||||||
using shared libraries.
|
by applications.
|
||||||
|
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.BR "png"(5), " libpng"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5)
|
.BR "libpng"(3)
|
||||||
|
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
Cosmin Truta, Glenn Randers-Pehrson
|
Cosmin Truta, Glenn Randers-Pehrson
|
||||||
|
@ -48,7 +48,7 @@ static int png_have_msa(png_structp png_ptr);
|
|||||||
#include PNG_MIPS_MSA_FILE
|
#include PNG_MIPS_MSA_FILE
|
||||||
|
|
||||||
#else /* 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_FILE */
|
||||||
#endif /* PNG_MIPS_MSA_CHECK_SUPPORTED */
|
#endif /* PNG_MIPS_MSA_CHECK_SUPPORTED */
|
||||||
|
|
||||||
@ -66,12 +66,12 @@ static int png_have_mmi();
|
|||||||
#include PNG_MIPS_MMI_FILE
|
#include PNG_MIPS_MMI_FILE
|
||||||
|
|
||||||
#else /* 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_FILE */
|
||||||
#endif /* PNG_MIPS_MMI_CHECK_SUPPORTED*/
|
#endif /* PNG_MIPS_MMI_CHECK_SUPPORTED*/
|
||||||
|
|
||||||
#ifndef PNG_ALIGNED_MEMORY_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
|
#endif
|
||||||
|
|
||||||
/* MIPS supports two optimizations: MMI and MSA. The appropriate
|
/* MIPS supports two optimizations: MMI and MSA. The appropriate
|
||||||
|
8
missing
8
missing
@ -1,11 +1,11 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Common wrapper for a few potentially missing GNU and other programs.
|
# 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
|
# 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 <pinard@iro.umontreal.ca>, 1996.
|
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
exit $st
|
||||||
|
|
||||||
# Local variables:
|
# 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-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%Y-%02m-%02d.%02H"
|
||||||
# time-stamp-time-zone: "UTC0"
|
# time-stamp-time-zone: "UTC0"
|
||||||
# time-stamp-end: "; # UTC"
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
34
png.5
34
png.5
@ -1,4 +1,4 @@
|
|||||||
.TH PNG 5 "February 18, 2025"
|
.TH PNG 5 "July 1, 2025"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
png \- Portable Network Graphics (PNG) format
|
png \- Portable Network Graphics (PNG) format
|
||||||
|
|
||||||
@ -20,20 +20,25 @@ matching on heterogeneous platforms.
|
|||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.BR "libpng"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5)
|
.BR "libpng"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5)
|
||||||
.LP
|
.LP
|
||||||
PNG Specification (Third Edition) Candidate Recommendation Draft, January 2025:
|
PNG Specification (Third Edition), June 2025:
|
||||||
.IP
|
.IP
|
||||||
.br
|
.br
|
||||||
https://www.w3.org/TR/2025/CRD-png-3-20250121/
|
https://www.w3.org/TR/2025/REC-png-3-20250624/
|
||||||
.LP
|
.LP
|
||||||
PNG Specification (Second Edition), November 2003:
|
PNG Specification (Second Edition), November 2003:
|
||||||
.IP
|
.IP
|
||||||
.br
|
.br
|
||||||
https://www.w3.org/TR/2003/REC-PNG-20031110/
|
https://www.w3.org/TR/2003/REC-PNG-20031110/
|
||||||
.LP
|
.LP
|
||||||
PNG 1.2 Specification, July 1999:
|
PNG 1.2 Specification, August 1999:
|
||||||
.IP
|
.IP
|
||||||
.br
|
.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
|
.LP
|
||||||
PNG 1.0 Specification, October 1996:
|
PNG 1.0 Specification, October 1996:
|
||||||
.IP
|
.IP
|
||||||
@ -50,15 +55,24 @@ https://www.w3.org/TR/REC-png-961001
|
|||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
This man page: Glenn Randers-Pehrson, Cosmin Truta
|
This man page: Glenn Randers-Pehrson, Cosmin Truta
|
||||||
.LP
|
.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)
|
Portable Network Graphics (PNG) Specification (Second Edition)
|
||||||
Information technology - Computer graphics and image processing -
|
Information technology - Computer graphics and image processing -
|
||||||
Portable Network Graphics (PNG): Functional specification.
|
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
|
.LP
|
||||||
Portable Network Graphics (PNG) Specification Version 1.2 (July 8, 1999):
|
Portable Network Graphics (PNG) Specification Version 1.2 (11 August 1999):
|
||||||
Glenn Randers-Pehrson and others.
|
Glenn Randers-Pehrson et al.
|
||||||
.LP
|
.LP
|
||||||
Portable Network Graphics (PNG) Specification Version 1.0 (October 1, 1996):
|
Portable Network Graphics (PNG) Specification Version 1.1 (31 December 1998):
|
||||||
Thomas Boutell and others.
|
Glenn Randers-Pehrson et al.
|
||||||
|
.LP
|
||||||
|
Portable Network Graphics (PNG) Specification Version 1.0.
|
||||||
|
IETF RFC 2083, W3C Recommendation 1 October 1996:
|
||||||
|
Thomas Boutell et al.
|
||||||
|
|
||||||
.\" end of man page
|
.\" end of man page
|
||||||
|
18
png.c
18
png.c
@ -13,7 +13,7 @@
|
|||||||
#include "pngpriv.h"
|
#include "pngpriv.h"
|
||||||
|
|
||||||
/* Generate a compiler error if there is an old png.h in the search path. */
|
/* 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_51_git Your_png_h_is_not_version_1_6_51_git;
|
||||||
|
|
||||||
/* Sanity check the chunks definitions - PNG_KNOWN_CHUNKS from pngpriv.h and the
|
/* Sanity check the chunks definitions - PNG_KNOWN_CHUNKS from pngpriv.h and the
|
||||||
* corresponding macro definitions. This causes a compile time failure if
|
* corresponding macro definitions. This causes a compile time failure if
|
||||||
@ -108,7 +108,13 @@ png_zalloc,(voidpf png_ptr, uInt items, uInt size),PNG_ALLOCATED)
|
|||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (items >= (~(png_alloc_size_t)0)/size)
|
/* This check against overflow is vestigial, dating back from
|
||||||
|
* the old times when png_zalloc used to be an exported function.
|
||||||
|
* We're still keeping it here for now, as an extra-cautious
|
||||||
|
* prevention against programming errors inside zlib, although it
|
||||||
|
* should rather be a debug-time assertion instead.
|
||||||
|
*/
|
||||||
|
if (size != 0 && items >= (~(png_alloc_size_t)0) / size)
|
||||||
{
|
{
|
||||||
png_warning(png_voidcast(png_structrp, png_ptr),
|
png_warning(png_voidcast(png_structrp, png_ptr),
|
||||||
"Potential overflow in png_zalloc()");
|
"Potential overflow in png_zalloc()");
|
||||||
@ -700,7 +706,7 @@ png_get_io_ptr(png_const_structrp png_ptr)
|
|||||||
* function of your own because "FILE *" isn't necessarily available.
|
* function of your own because "FILE *" isn't necessarily available.
|
||||||
*/
|
*/
|
||||||
void PNGAPI
|
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");
|
png_debug(1, "in png_init_io");
|
||||||
|
|
||||||
@ -815,7 +821,7 @@ png_get_copyright(png_const_structrp png_ptr)
|
|||||||
return PNG_STRING_COPYRIGHT
|
return PNG_STRING_COPYRIGHT
|
||||||
#else
|
#else
|
||||||
return PNG_STRING_NEWLINE \
|
return PNG_STRING_NEWLINE \
|
||||||
"libpng version 1.6.47" PNG_STRING_NEWLINE \
|
"libpng version 1.6.51.git" PNG_STRING_NEWLINE \
|
||||||
"Copyright (c) 2018-2025 Cosmin Truta" PNG_STRING_NEWLINE \
|
"Copyright (c) 2018-2025 Cosmin Truta" PNG_STRING_NEWLINE \
|
||||||
"Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \
|
"Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \
|
||||||
PNG_STRING_NEWLINE \
|
PNG_STRING_NEWLINE \
|
||||||
@ -1491,7 +1497,7 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy)
|
|||||||
}
|
}
|
||||||
#endif /* COLORSPACE */
|
#endif /* COLORSPACE */
|
||||||
|
|
||||||
#ifdef PNG_iCCP_SUPPORTED
|
#ifdef PNG_READ_iCCP_SUPPORTED
|
||||||
/* Error message generation */
|
/* Error message generation */
|
||||||
static char
|
static char
|
||||||
png_icc_tag_char(png_uint_32 byte)
|
png_icc_tag_char(png_uint_32 byte)
|
||||||
@ -1567,9 +1573,7 @@ png_icc_profile_error(png_const_structrp png_ptr, png_const_charp name,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* iCCP */
|
|
||||||
|
|
||||||
#ifdef PNG_READ_iCCP_SUPPORTED
|
|
||||||
/* Encoded value of D50 as an ICC XYZNumber. From the ICC 2010 spec the value
|
/* 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:
|
* is XYZ(0.9642,1.0,0.8249), which scales to:
|
||||||
*
|
*
|
||||||
|
75
png.h
75
png.h
@ -1,6 +1,6 @@
|
|||||||
/* png.h - header file for PNG reference library
|
/* png.h - header file for PNG reference library
|
||||||
*
|
*
|
||||||
* libpng version 1.6.47
|
* libpng version 1.6.51.git
|
||||||
*
|
*
|
||||||
* Copyright (c) 2018-2025 Cosmin Truta
|
* Copyright (c) 2018-2025 Cosmin Truta
|
||||||
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
* 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.89, June 1996, through 0.96, May 1997: Andreas Dilger
|
||||||
* libpng versions 0.97, January 1998, through 1.6.35, July 2018:
|
* libpng versions 0.97, January 1998, through 1.6.35, July 2018:
|
||||||
* Glenn Randers-Pehrson
|
* 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
|
* Cosmin Truta
|
||||||
* See also "Contributing Authors", below.
|
* See also "Contributing Authors", below.
|
||||||
*/
|
*/
|
||||||
@ -238,7 +238,7 @@
|
|||||||
* ...
|
* ...
|
||||||
* 1.5.30 15 10530 15.so.15.30[.0]
|
* 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
|
* Henceforth the source version will match the shared-library major and
|
||||||
* minor numbers; the shared-library major version number will be used for
|
* 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 */
|
/* 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.51.git"
|
||||||
#define PNG_HEADER_VERSION_STRING " libpng version " PNG_LIBPNG_VER_STRING "\n"
|
#define PNG_HEADER_VERSION_STRING " libpng version " PNG_LIBPNG_VER_STRING "\n"
|
||||||
|
|
||||||
/* The versions of shared library builds should stay in sync, going forward */
|
/* The versions of shared library builds should stay in sync, going forward */
|
||||||
@ -285,12 +285,12 @@
|
|||||||
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
|
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
|
||||||
#define PNG_LIBPNG_VER_MAJOR 1
|
#define PNG_LIBPNG_VER_MAJOR 1
|
||||||
#define PNG_LIBPNG_VER_MINOR 6
|
#define PNG_LIBPNG_VER_MINOR 6
|
||||||
#define PNG_LIBPNG_VER_RELEASE 47
|
#define PNG_LIBPNG_VER_RELEASE 51
|
||||||
|
|
||||||
/* This should be zero for a public release, or non-zero for a
|
/* This should be zero for a public release, or non-zero for a
|
||||||
* development version.
|
* development version.
|
||||||
*/
|
*/
|
||||||
#define PNG_LIBPNG_VER_BUILD 0
|
#define PNG_LIBPNG_VER_BUILD 1
|
||||||
|
|
||||||
/* Release Status */
|
/* Release Status */
|
||||||
#define PNG_LIBPNG_BUILD_ALPHA 1
|
#define PNG_LIBPNG_BUILD_ALPHA 1
|
||||||
@ -307,7 +307,7 @@
|
|||||||
#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
|
#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
|
||||||
PNG_LIBPNG_BUILD_PRIVATE */
|
PNG_LIBPNG_BUILD_PRIVATE */
|
||||||
|
|
||||||
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
|
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_BETA
|
||||||
|
|
||||||
/* Careful here. At one time, Guy wanted to use 082, but that
|
/* Careful here. At one time, Guy wanted to use 082, but that
|
||||||
* would be octal. We must not include leading zeros.
|
* would be octal. We must not include leading zeros.
|
||||||
@ -316,7 +316,7 @@
|
|||||||
* From version 1.0.1 it is:
|
* From version 1.0.1 it is:
|
||||||
* XXYYZZ, where XX=major, YY=minor, ZZ=release
|
* XXYYZZ, where XX=major, YY=minor, ZZ=release
|
||||||
*/
|
*/
|
||||||
#define PNG_LIBPNG_VER 10647 /* 1.6.47 */
|
#define PNG_LIBPNG_VER 10651 /* 1.6.51.git */
|
||||||
|
|
||||||
/* Library configuration: these options cannot be changed after
|
/* Library configuration: these options cannot be changed after
|
||||||
* the library has been built.
|
* 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
|
/* This triggers a compiler error in png.c, if png.c and png.h
|
||||||
* do not agree upon the version number.
|
* do not agree upon the version number.
|
||||||
*/
|
*/
|
||||||
typedef char* png_libpng_version_1_6_47;
|
typedef char* png_libpng_version_1_6_51_git;
|
||||||
|
|
||||||
/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info.
|
/* 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
|
#ifdef PNG_STDIO_SUPPORTED
|
||||||
/* Initialize the input/output for the PNG file to the default functions. */
|
/* 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
|
#endif
|
||||||
|
|
||||||
/* Replace the (error and abort), and warning functions with user
|
/* Replace the (error and abort), and warning functions with user
|
||||||
@ -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,
|
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,
|
int convert_to_8_bit, const void *buffer, png_int_32 row_stride,
|
||||||
const void *colormap));
|
const void *colormap));
|
||||||
/* Write the image to the given (FILE*). */
|
/* Write the image to the given FILE object. */
|
||||||
#endif /* SIMPLIFIED_WRITE_STDIO */
|
#endif /* SIMPLIFIED_WRITE_STDIO */
|
||||||
|
|
||||||
/* With all write APIs if image is in one of the linear formats with 16-bit
|
/* 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.
|
* selected at run time.
|
||||||
*/
|
*/
|
||||||
#ifdef PNG_SET_OPTION_SUPPORTED
|
#ifdef PNG_SET_OPTION_SUPPORTED
|
||||||
|
|
||||||
|
/* HARDWARE: ARM Neon SIMD instructions supported */
|
||||||
#ifdef PNG_ARM_NEON_API_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 */
|
|
||||||
#ifdef PNG_MIPS_MSA_API_SUPPORTED
|
|
||||||
# define PNG_MIPS_MSA 6 /* HARDWARE: MIPS Msa SIMD instructions supported */
|
|
||||||
#endif
|
|
||||||
#ifdef PNG_DISABLE_ADLER32_CHECK_SUPPORTED
|
|
||||||
# define PNG_IGNORE_ADLER32 8 /* SOFTWARE: disable Adler32 check on IDAT */
|
|
||||||
#endif
|
|
||||||
#ifdef PNG_POWERPC_VSX_API_SUPPORTED
|
|
||||||
# define PNG_POWERPC_VSX 10 /* HARDWARE: PowerPC VSX SIMD instructions
|
|
||||||
* supported */
|
|
||||||
#endif
|
|
||||||
#ifdef PNG_MIPS_MMI_API_SUPPORTED
|
|
||||||
# define PNG_MIPS_MMI 12 /* HARDWARE: MIPS MMI SIMD instructions supported */
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PNG_OPTION_NEXT 14 /* Next option - numbers must be even */
|
/* 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
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* SOFTWARE: Disable Adler32 check on IDAT */
|
||||||
|
#ifdef PNG_DISABLE_ADLER32_CHECK_SUPPORTED
|
||||||
|
# define PNG_IGNORE_ADLER32 8
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* HARDWARE: PowerPC VSX SIMD instructions supported */
|
||||||
|
#ifdef PNG_POWERPC_VSX_API_SUPPORTED
|
||||||
|
# define PNG_POWERPC_VSX 10
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* HARDWARE: MIPS MMI SIMD instructions supported */
|
||||||
|
#ifdef PNG_MIPS_MMI_API_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
|
||||||
|
|
||||||
|
/* Next option - numbers must be even */
|
||||||
|
#define PNG_OPTION_NEXT 16
|
||||||
|
|
||||||
/* Return values: NOTE: there are four values and 'off' is *not* zero */
|
/* Return values: NOTE: there are four values and 'off' is *not* zero */
|
||||||
#define PNG_OPTION_UNSET 0 /* Unset - defaults to off */
|
#define PNG_OPTION_UNSET 0 /* Unset - defaults to off */
|
||||||
|
39
pngconf.h
39
pngconf.h
@ -1,6 +1,6 @@
|
|||||||
/* pngconf.h - machine-configurable file for libpng
|
/* pngconf.h - machine-configurable file for libpng
|
||||||
*
|
*
|
||||||
* libpng version 1.6.47
|
* libpng version 1.6.51.git
|
||||||
*
|
*
|
||||||
* Copyright (c) 2018-2025 Cosmin Truta
|
* Copyright (c) 2018-2025 Cosmin Truta
|
||||||
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
|
||||||
@ -219,25 +219,13 @@
|
|||||||
/* NOTE: PNGCBAPI always defaults to PNGCAPI. */
|
/* NOTE: PNGCBAPI always defaults to PNGCAPI. */
|
||||||
|
|
||||||
# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD)
|
# 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
|
# 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)
|
# define PNG_DLL_EXPORT __declspec(dllexport)
|
||||||
# ifndef PNG_DLL_IMPORT
|
# ifndef PNG_DLL_IMPORT
|
||||||
# define PNG_DLL_IMPORT __declspec(dllimport)
|
# define PNG_DLL_IMPORT __declspec(dllimport)
|
||||||
# endif
|
# endif
|
||||||
# endif /* compiler */
|
|
||||||
|
|
||||||
#else /* !Windows */
|
#else /* !Windows */
|
||||||
# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
|
# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
|
||||||
@ -479,7 +467,7 @@
|
|||||||
#if CHAR_BIT == 8 && UCHAR_MAX == 255
|
#if CHAR_BIT == 8 && UCHAR_MAX == 255
|
||||||
typedef unsigned char png_byte;
|
typedef unsigned char png_byte;
|
||||||
#else
|
#else
|
||||||
# error "libpng requires 8-bit bytes"
|
# error libpng requires 8-bit bytes
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if INT_MIN == -32768 && INT_MAX == 32767
|
#if INT_MIN == -32768 && INT_MAX == 32767
|
||||||
@ -487,7 +475,7 @@
|
|||||||
#elif SHRT_MIN == -32768 && SHRT_MAX == 32767
|
#elif SHRT_MIN == -32768 && SHRT_MAX == 32767
|
||||||
typedef short png_int_16;
|
typedef short png_int_16;
|
||||||
#else
|
#else
|
||||||
# error "libpng requires a signed 16-bit type"
|
# error libpng requires a signed 16-bit integer type
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if UINT_MAX == 65535
|
#if UINT_MAX == 65535
|
||||||
@ -495,7 +483,7 @@
|
|||||||
#elif USHRT_MAX == 65535
|
#elif USHRT_MAX == 65535
|
||||||
typedef unsigned short png_uint_16;
|
typedef unsigned short png_uint_16;
|
||||||
#else
|
#else
|
||||||
# error "libpng requires an unsigned 16-bit type"
|
# error libpng requires an unsigned 16-bit integer type
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if INT_MIN < -2147483646 && INT_MAX > 2147483646
|
#if INT_MIN < -2147483646 && INT_MAX > 2147483646
|
||||||
@ -503,7 +491,7 @@
|
|||||||
#elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646
|
#elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646
|
||||||
typedef long int png_int_32;
|
typedef long int png_int_32;
|
||||||
#else
|
#else
|
||||||
# error "libpng requires a signed 32-bit (or more) type"
|
# error libpng requires a signed 32-bit (or longer) integer type
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if UINT_MAX > 4294967294U
|
#if UINT_MAX > 4294967294U
|
||||||
@ -511,7 +499,7 @@
|
|||||||
#elif ULONG_MAX > 4294967294U
|
#elif ULONG_MAX > 4294967294U
|
||||||
typedef unsigned long int png_uint_32;
|
typedef unsigned long int png_uint_32;
|
||||||
#else
|
#else
|
||||||
# error "libpng requires an unsigned 32-bit (or more) type"
|
# error libpng requires an unsigned 32-bit (or longer) integer type
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t.
|
/* 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 size_t * png_size_tp;
|
||||||
typedef const size_t * png_const_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
|
#ifdef PNG_FLOATING_POINT_SUPPORTED
|
||||||
typedef double * png_doublep;
|
typedef double * png_doublep;
|
||||||
typedef const double * png_const_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 */
|
/* Pointers to pointers to pointers; i.e., pointer to array */
|
||||||
typedef char * * * png_charppp;
|
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 /* PNG_BUILDING_SYMBOL_TABLE */
|
||||||
|
|
||||||
#endif /* PNGCONF_H */
|
#endif /* PNGCONF_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) 1998-2002,2004,2006-2013 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
@ -10,6 +10,10 @@
|
|||||||
* and license in png.h
|
* and license in png.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef PNGPRIV_H
|
||||||
|
# error This file must not be included by applications; please include <png.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Define PNG_DEBUG at compile time for debugging information. Higher
|
/* Define PNG_DEBUG at compile time for debugging information. Higher
|
||||||
* numbers for PNG_DEBUG mean more debugging information. This has
|
* numbers for PNG_DEBUG mean more debugging information. This has
|
||||||
* only been added since version 0.95 so it is not implemented throughout
|
* only been added since version 0.95 so it is not implemented throughout
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* pngerror.c - stub functions for i/o and memory allocation
|
/* 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) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
|
2
pngget.c
2
pngget.c
@ -1,6 +1,6 @@
|
|||||||
/* pngget.c - retrieval of values from info struct
|
/* 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) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
|
51
pnginfo.h
51
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) 1998-2002,2004,2006-2013,2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
@ -10,43 +10,20 @@
|
|||||||
* and license in png.h
|
* and license in png.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* png_info is a structure that holds the information in a PNG file so
|
#ifndef PNGPRIV_H
|
||||||
* that the application can find out the characteristics of the image.
|
# error This file must not be included by applications; please include <png.h>
|
||||||
* If you are reading the file, this structure will tell you what is
|
#endif
|
||||||
* 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
|
/* INTERNAL, PRIVATE definition of a PNG.
|
||||||
* call png_write_info().
|
|
||||||
*
|
*
|
||||||
* The names chosen should be very close to the PNG specification, so
|
* png_info is a modifiable description of a PNG datastream. The fields inside
|
||||||
* consult that document for information about the meaning of each field.
|
* this structure are accessed through png_get_<CHUNK>() functions and modified
|
||||||
|
* using png_set_<CHUNK>() functions.
|
||||||
*
|
*
|
||||||
* With libpng < 0.95, it was only possible to directly set and read the
|
* Some functions in libpng do directly access members of png_info. However,
|
||||||
* the values in the png_info_struct, which meant that the contents and
|
* this should be avoided. png_struct objects contain members which hold
|
||||||
* order of the values had to remain fixed. With libpng 0.95 and later,
|
* caches, sometimes optimised, of the values from png_info objects, and
|
||||||
* however, there are now functions that abstract the contents of
|
* png_info is not passed to the functions which read and write image data.
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
*/
|
||||||
#ifndef PNGINFO_H
|
#ifndef PNGINFO_H
|
||||||
#define PNGINFO_H
|
#define PNGINFO_H
|
||||||
|
2
pngmem.c
2
pngmem.c
@ -1,6 +1,6 @@
|
|||||||
/* pngmem.c - stub functions for memory allocation
|
/* 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) 1998-2002,2004,2006-2014,2016 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
|
10
pngpread.c
10
pngpread.c
@ -1,6 +1,6 @@
|
|||||||
/* pngpread.c - read a png file in push mode
|
/* 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) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* 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");
|
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 (chunk_name == png_IHDR)
|
||||||
{
|
{
|
||||||
if (png_ptr->push_length != 13)
|
if (png_ptr->push_length != 13)
|
||||||
|
82
pngpriv.h
82
pngpriv.h
@ -1,6 +1,6 @@
|
|||||||
/* pngpriv.h - private declarations for use inside libpng
|
/* 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) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* 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.
|
* 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
|
#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 <png.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Feature Test Macros. The following are defined here to ensure that correctly
|
/* Feature Test Macros. The following are defined here to ensure that correctly
|
||||||
* implemented libraries reveal the APIs libpng needs to build and hide those
|
* 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)
|
#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H)
|
||||||
# include <config.h>
|
# include <config.h>
|
||||||
|
|
||||||
/* Pick up the definition of 'restrict' from config.h if it was read: */
|
/* Pick up the definition of 'restrict' from config.h if it was read: */
|
||||||
# define PNG_RESTRICT restrict
|
# define PNG_RESTRICT restrict
|
||||||
#endif
|
#endif
|
||||||
@ -67,9 +78,7 @@
|
|||||||
* are not internal definitions may be required. This is handled below just
|
* 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.
|
* before png.h is included, but load the configuration now if it is available.
|
||||||
*/
|
*/
|
||||||
#ifndef PNGLCONF_H
|
|
||||||
#include "pnglibconf.h"
|
#include "pnglibconf.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Local renames may change non-exported API functions from png.h */
|
/* Local renames may change non-exported API functions from png.h */
|
||||||
#if defined(PNG_PREFIX) && !defined(PNGPREFIX_H)
|
#if defined(PNG_PREFIX) && !defined(PNGPREFIX_H)
|
||||||
@ -134,6 +143,20 @@
|
|||||||
# endif
|
# endif
|
||||||
#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
|
#if PNG_ARM_NEON_OPT > 0
|
||||||
/* NEON optimizations are to be at least considered by libpng, so enable the
|
/* NEON optimizations are to be at least considered by libpng, so enable the
|
||||||
* callbacks to do this.
|
* callbacks to do this.
|
||||||
@ -279,6 +302,16 @@
|
|||||||
# define PNG_LOONGARCH_LSX_IMPLEMENTATION 0
|
# define PNG_LOONGARCH_LSX_IMPLEMENTATION 0
|
||||||
#endif
|
#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
|
/* 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
|
* different preprocessor settings to those required for a simple library? If
|
||||||
* so PNG_BUILD_DLL must be set.
|
* 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:
|
* 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
|
#if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM
|
||||||
# error ZLIB_VERNUM != PNG_ZLIB_VERNUM \
|
# error The include path of <zlib.h> is incorrect
|
||||||
"-I (include path) error: see the notes in pngpriv.h"
|
/* When pnglibconf.h was built, the copy of zlib.h that it used was not the
|
||||||
/* This means that when pnglibconf.h was built the copy of zlib.h that it
|
* same as the one being used here. Considering how libpng makes decisions
|
||||||
* used is not the same as the one being used here. Because the build of
|
* to use the zlib API based on the zlib version number, the -I options must
|
||||||
* libpng makes decisions to use inflateInit2 and inflateReset2 based on the
|
* match.
|
||||||
* zlib version number and because this affects handling of certain broken
|
|
||||||
* PNG files the -I directives must match.
|
|
||||||
*
|
*
|
||||||
* The most likely explanation is that you passed a -I in CFLAGS. This will
|
* A possible cause of this mismatch is that you passed an -I option in
|
||||||
* not work; all the preprocessor directives and in particular all the -I
|
* CFLAGS, which is unlikely to work. All the preprocessor options, and all
|
||||||
* directives must be in CPPFLAGS.
|
* the -I options in particular, should be in CPPFLAGS.
|
||||||
*/
|
*/
|
||||||
#endif
|
#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);
|
row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
|
||||||
#endif
|
#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 */
|
/* Choose the best filter to use and filter the row data */
|
||||||
PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr,
|
PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr,
|
||||||
png_row_infop row_info),PNG_EMPTY);
|
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);
|
(png_structp png_ptr, unsigned int bpp), PNG_EMPTY);
|
||||||
#endif
|
#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_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr,
|
||||||
png_const_charp key, png_bytep new_key), PNG_EMPTY);
|
png_const_charp key, png_bytep new_key), PNG_EMPTY);
|
||||||
|
|
||||||
@ -2162,4 +2215,3 @@ PNG_INTERNAL_FUNCTION(int,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* PNG_VERSION_INFO_ONLY */
|
#endif /* PNG_VERSION_INFO_ONLY */
|
||||||
#endif /* PNGPRIV_H */
|
|
||||||
|
10
pngread.c
10
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;
|
png_uint_32 chunk_name = png_ptr->chunk_name;
|
||||||
|
|
||||||
if (chunk_name != png_IDAT)
|
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)
|
if (chunk_name == png_IEND)
|
||||||
png_handle_chunk(png_ptr, info_ptr, length);
|
png_handle_chunk(png_ptr, info_ptr, length);
|
||||||
@ -809,7 +814,8 @@ png_read_destroy(png_structrp png_ptr)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(PNG_READ_EXPAND_SUPPORTED) && \
|
#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_free(png_ptr, png_ptr->riffled_palette);
|
||||||
png_ptr->riffled_palette = NULL;
|
png_ptr->riffled_palette = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
4
pngrio.c
4
pngrio.c
@ -1,6 +1,6 @@
|
|||||||
/* pngrio.c - functions for data input
|
/* 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) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* 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
|
/* 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.
|
* 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)
|
if (check != length)
|
||||||
png_error(png_ptr, "Read Error");
|
png_error(png_ptr, "Read Error");
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* pngrtran.c - transforms the data in a row for PNG readers
|
/* 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) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
@ -28,6 +28,12 @@
|
|||||||
# endif
|
# endif
|
||||||
#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
|
#ifdef PNG_READ_SUPPORTED
|
||||||
|
|
||||||
/* Set the action on getting a CRC error for an ancillary or critical chunk. */
|
/* Set the action on getting a CRC error for an ancillary or critical chunk. */
|
||||||
|
14
pngrutil.c
14
pngrutil.c
@ -1,6 +1,6 @@
|
|||||||
/* pngrutil.c - utilities to read a PNG file
|
/* 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) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* 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
|
#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);
|
buffer = png_read_buffer(png_ptr, length+1);
|
||||||
|
|
||||||
if (buffer == NULL)
|
if (buffer == NULL)
|
||||||
@ -2486,10 +2482,6 @@ png_handle_zTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
|
|||||||
}
|
}
|
||||||
#endif
|
#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
|
/* Note, "length" is sufficient here; we won't be adding
|
||||||
* a null terminator later. The limit check in png_handle_chunk should be
|
* a null terminator later. The limit check in png_handle_chunk should be
|
||||||
* sufficient.
|
* sufficient.
|
||||||
@ -2606,10 +2598,6 @@ png_handle_iTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
|
|||||||
}
|
}
|
||||||
#endif
|
#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);
|
buffer = png_read_buffer(png_ptr, length+1);
|
||||||
|
|
||||||
if (buffer == NULL)
|
if (buffer == NULL)
|
||||||
|
19
pngset.c
19
pngset.c
@ -300,17 +300,14 @@ png_set_mDCV(png_const_structrp png_ptr, png_inforp info_ptr,
|
|||||||
double maxDL, double minDL)
|
double maxDL, double minDL)
|
||||||
{
|
{
|
||||||
png_set_mDCV_fixed(png_ptr, info_ptr,
|
png_set_mDCV_fixed(png_ptr, info_ptr,
|
||||||
/* The ITU approach is to scale by 50,000, not 100,000 so just divide
|
png_fixed(png_ptr, white_x, "png_set_mDCV(white(x))"),
|
||||||
* the input values by 2 and use png_fixed:
|
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, white_x / 2, "png_set_mDCV(white(x))"),
|
png_fixed(png_ptr, red_y, "png_set_mDCV(red(y))"),
|
||||||
png_fixed(png_ptr, white_y / 2, "png_set_mDCV(white(y))"),
|
png_fixed(png_ptr, green_x, "png_set_mDCV(green(x))"),
|
||||||
png_fixed(png_ptr, red_x / 2, "png_set_mDCV(red(x))"),
|
png_fixed(png_ptr, green_y, "png_set_mDCV(green(y))"),
|
||||||
png_fixed(png_ptr, red_y / 2, "png_set_mDCV(red(y))"),
|
png_fixed(png_ptr, blue_x, "png_set_mDCV(blue(x))"),
|
||||||
png_fixed(png_ptr, green_x / 2, "png_set_mDCV(green(x))"),
|
png_fixed(png_ptr, blue_y, "png_set_mDCV(blue(y))"),
|
||||||
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_ITU(png_ptr, maxDL, "png_set_mDCV(maxDL)"),
|
png_fixed_ITU(png_ptr, maxDL, "png_set_mDCV(maxDL)"),
|
||||||
png_fixed_ITU(png_ptr, minDL, "png_set_mDCV(minDL)"));
|
png_fixed_ITU(png_ptr, minDL, "png_set_mDCV(minDL)"));
|
||||||
}
|
}
|
||||||
|
15
pngstruct.h
15
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) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
@ -10,11 +10,9 @@
|
|||||||
* and license in png.h
|
* and license in png.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* The structure that holds the information to read and write PNG files.
|
#ifndef PNGPRIV_H
|
||||||
* The only people who need to care about what is inside of this are the
|
# error This file must not be included by applications; please include <png.h>
|
||||||
* people who will be modifying the library for their own special needs.
|
#endif
|
||||||
* It should NOT be accessed directly by an application.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef PNGSTRUCT_H
|
#ifndef PNGSTRUCT_H
|
||||||
#define PNGSTRUCT_H
|
#define PNGSTRUCT_H
|
||||||
@ -377,7 +375,8 @@ struct png_struct_def
|
|||||||
|
|
||||||
/* New member added in libpng-1.6.36 */
|
/* New member added in libpng-1.6.36 */
|
||||||
#if defined(PNG_READ_EXPAND_SUPPORTED) && \
|
#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 */
|
png_bytep riffled_palette; /* buffer for accelerated palette expansion */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
18
pngtest.c
18
pngtest.c
@ -50,7 +50,7 @@
|
|||||||
#define STDERR stdout
|
#define STDERR stdout
|
||||||
|
|
||||||
/* Generate a compiler error if there is an old png.h in the search path. */
|
/* 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_51_git Your_png_h_is_not_version_1_6_51_git;
|
||||||
|
|
||||||
/* Ensure that all version numbers in png.h are consistent with one another. */
|
/* Ensure that all version numbers in png.h are consistent with one another. */
|
||||||
#if (PNG_LIBPNG_VER != PNG_LIBPNG_VER_MAJOR * 10000 + \
|
#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_MINOR) || \
|
||||||
(PNG_LIBPNG_VER_SHAREDLIB != PNG_LIBPNG_VER_SONUM) || \
|
(PNG_LIBPNG_VER_SHAREDLIB != PNG_LIBPNG_VER_SONUM) || \
|
||||||
(PNG_LIBPNG_VER_SHAREDLIB != PNG_LIBPNG_VER_DLLNUM)
|
(PNG_LIBPNG_VER_SHAREDLIB != PNG_LIBPNG_VER_DLLNUM)
|
||||||
# error "Inconsistent version numbers in png.h"
|
# error Inconsistent version numbers in "png.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* In version 1.6.1, we added support for the configure test harness, which
|
/* 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
|
# define PNG_ZBUF_SIZE 8192
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef PNG_STDIO_SUPPORTED
|
|
||||||
typedef FILE * png_FILE_p;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef PNG_DEBUG
|
#ifndef PNG_DEBUG
|
||||||
# define PNG_DEBUG 0
|
# define PNG_DEBUG 0
|
||||||
#endif
|
#endif
|
||||||
@ -120,7 +116,7 @@ typedef FILE * png_FILE_p;
|
|||||||
# define pngtest_debug1(m, p1) ((void)0)
|
# define pngtest_debug1(m, p1) ((void)0)
|
||||||
# define pngtest_debug2(m, p1, p2) ((void)0)
|
# define pngtest_debug2(m, p1, p2) ((void)0)
|
||||||
#else /* PNG_DEBUG < 0 */
|
#else /* PNG_DEBUG < 0 */
|
||||||
# error "Bad PNG_DEBUG value"
|
# error Bad PNG_DEBUG value
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Turn on CPU timing
|
/* 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);
|
io_ptr = png_get_io_ptr(png_ptr);
|
||||||
if (io_ptr != NULL)
|
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)
|
if (check != length)
|
||||||
png_error(png_ptr, "Read Error");
|
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)
|
if (png_ptr == NULL)
|
||||||
png_error(png_ptr, "pngtest_write_data: bad png_ptr");
|
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)
|
if (check != length)
|
||||||
png_error(png_ptr, "Write Error");
|
png_error(png_ptr, "Write Error");
|
||||||
@ -858,8 +854,8 @@ pngtest_check_text_support(png_structp png_ptr, png_textp text_ptr,
|
|||||||
static int
|
static int
|
||||||
test_one_file(const char *inname, const char *outname)
|
test_one_file(const char *inname, const char *outname)
|
||||||
{
|
{
|
||||||
static png_FILE_p fpin;
|
static FILE *fpin;
|
||||||
static png_FILE_p fpout; /* "static" prevents setjmp corruption */
|
static FILE *fpout; /* "static" prevents setjmp corruption */
|
||||||
pngtest_error_parameters error_parameters;
|
pngtest_error_parameters error_parameters;
|
||||||
png_structp read_ptr;
|
png_structp read_ptr;
|
||||||
png_infop read_info_ptr, end_info_ptr;
|
png_infop read_info_ptr, end_info_ptr;
|
||||||
|
8
pngwio.c
8
pngwio.c
@ -1,6 +1,6 @@
|
|||||||
/* pngwio.c - functions for data output
|
/* 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) 1998-2002,2004,2006-2014,2016,2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* 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)
|
if (png_ptr == NULL)
|
||||||
return;
|
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)
|
if (check != length)
|
||||||
png_error(png_ptr, "Write Error");
|
png_error(png_ptr, "Write Error");
|
||||||
@ -77,12 +77,12 @@ png_flush(png_structrp png_ptr)
|
|||||||
void PNGCBAPI
|
void PNGCBAPI
|
||||||
png_default_flush(png_structp png_ptr)
|
png_default_flush(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_FILE_p io_ptr;
|
FILE *io_ptr;
|
||||||
|
|
||||||
if (png_ptr == NULL)
|
if (png_ptr == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
io_ptr = png_voidcast(png_FILE_p, (png_ptr->io_ptr));
|
io_ptr = png_voidcast(FILE *, png_ptr->io_ptr);
|
||||||
fflush(io_ptr);
|
fflush(io_ptr);
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
@ -2333,7 +2333,7 @@ int PNGAPI
|
|||||||
png_image_write_to_stdio(png_imagep image, FILE *file, int convert_to_8bit,
|
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)
|
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 (image != NULL && image->version == PNG_IMAGE_VERSION)
|
||||||
{
|
{
|
||||||
if (file != NULL && buffer != NULL)
|
if (file != NULL && buffer != NULL)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* pngwutil.c - utilities to write a PNG file
|
/* 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) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
||||||
* Copyright (c) 1996-1997 Andreas Dilger
|
* Copyright (c) 1996-1997 Andreas Dilger
|
||||||
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#if PNG_POWERPC_VSX_OPT > 0
|
#if PNG_POWERPC_VSX_OPT > 0
|
||||||
|
|
||||||
#ifndef __VSX__
|
#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
|
#endif
|
||||||
|
|
||||||
#define vec_ld_unaligned(vec,data) vec = vec_vsx_ld(0,data)
|
#define vec_ld_unaligned(vec,data) vec = vec_vsx_ld(0,data)
|
||||||
|
@ -46,7 +46,7 @@ static int png_have_vsx(png_structp png_ptr);
|
|||||||
#include PNG_POWERPC_VSX_FILE
|
#include PNG_POWERPC_VSX_FILE
|
||||||
|
|
||||||
#else /* 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_FILE */
|
||||||
#endif /* PNG_POWERPC_VSX_CHECK_SUPPORTED */
|
#endif /* PNG_POWERPC_VSX_CHECK_SUPPORTED */
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
|
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"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="3"
|
RuntimeLibrary="3"
|
||||||
UsePrecompiledHeader="3"
|
UsePrecompiledHeader="3"
|
||||||
@ -91,7 +91,7 @@
|
|||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCResourceCompilerTool"
|
Name="VCResourceCompilerTool"
|
||||||
PreprocessorDefinitions="_DEBUG,PNG_DEBUG=1"
|
PreprocessorDefinitions="_DEBUG"
|
||||||
Culture="1033"
|
Culture="1033"
|
||||||
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
|
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
|
||||||
<Tool
|
<Tool
|
||||||
@ -205,7 +205,7 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
|
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;_CRT_SECURE_NO_WARNINGS"
|
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;_CRT_SECURE_NO_WARNINGS"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="3"
|
UsePrecompiledHeader="3"
|
||||||
|
8
riscv/.editorconfig
Normal file
8
riscv/.editorconfig
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# https://editorconfig.org
|
||||||
|
|
||||||
|
root = false
|
||||||
|
|
||||||
|
# FIXME
|
||||||
|
[*.[ch]]
|
||||||
|
max_doc_length = unset
|
||||||
|
max_line_length = unset
|
350
riscv/filter_rvv_intrinsics.c
Normal file
350
riscv/filter_rvv_intrinsics.c
Normal file
@ -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 <dtiselice@google.com>, May 2023.
|
||||||
|
* Filip Wasil <f.wasil@samsung.com>, 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 <riscv_vector.h>
|
||||||
|
|
||||||
|
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 */
|
68
riscv/riscv_init.c
Normal file
68
riscv/riscv_init.c
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
/* riscv_init.c - RISC-V Vector optimized filter functions
|
||||||
|
*
|
||||||
|
* Copyright (c) 2023 Google LLC
|
||||||
|
* Written by Dragoș Tiselice <dtiselice@google.com>, May 2023.
|
||||||
|
* Filip Wasil <f.wasil@samsung.com>, 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 <riscv_vector.h>
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
#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 */
|
@ -29,6 +29,7 @@ Author List
|
|||||||
* Jeremy Maitin-Shepard
|
* Jeremy Maitin-Shepard
|
||||||
* John Bowler
|
* John Bowler
|
||||||
* Jon Creighton
|
* Jon Creighton
|
||||||
|
* Joost Nieuwenhuijse
|
||||||
* Kyle Bentley
|
* Kyle Bentley
|
||||||
* Martin Storsjö
|
* Martin Storsjö
|
||||||
* Owen Rudge
|
* Owen Rudge
|
||||||
|
45
scripts/cmake/PNGCheckLibconf.cmake
Normal file
45
scripts/cmake/PNGCheckLibconf.cmake
Normal file
@ -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 <file>] [DFA_XTRA <file>])
|
||||||
|
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()
|
@ -18,21 +18,21 @@ function(generate_chk)
|
|||||||
set(options)
|
set(options)
|
||||||
set(oneValueArgs INPUT OUTPUT)
|
set(oneValueArgs INPUT OUTPUT)
|
||||||
set(multiValueArgs DEPENDS)
|
set(multiValueArgs DEPENDS)
|
||||||
cmake_parse_arguments(_GC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
cmake_parse_arguments(_GENCHK "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
if(NOT _GC_INPUT)
|
if(NOT _GENCHK_INPUT)
|
||||||
message(FATAL_ERROR "generate_chk: Missing INPUT argument")
|
message(FATAL_ERROR "generate_chk: Missing INPUT argument")
|
||||||
endif()
|
endif()
|
||||||
if(NOT _GC_OUTPUT)
|
if(NOT _GENCHK_OUTPUT)
|
||||||
message(FATAL_ERROR "generate_chk: Missing OUTPUT argument")
|
message(FATAL_ERROR "generate_chk: Missing OUTPUT argument")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Run genchk.cmake to generate the .chk file.
|
# Run genchk.cmake to generate the .chk file.
|
||||||
add_custom_command(OUTPUT "${_GC_OUTPUT}"
|
add_custom_command(OUTPUT "${_GENCHK_OUTPUT}"
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
"-DINPUT=${_GC_INPUT}"
|
"-DINPUT=${_GENCHK_INPUT}"
|
||||||
"-DOUTPUT=${_GC_OUTPUT}"
|
"-DOUTPUT=${_GENCHK_OUTPUT}"
|
||||||
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genchk.cmake"
|
-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}")
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
@ -42,21 +42,21 @@ function(generate_out)
|
|||||||
set(options)
|
set(options)
|
||||||
set(oneValueArgs INPUT OUTPUT)
|
set(oneValueArgs INPUT OUTPUT)
|
||||||
set(multiValueArgs DEPENDS)
|
set(multiValueArgs DEPENDS)
|
||||||
cmake_parse_arguments(_GO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
cmake_parse_arguments(_GENOUT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
if(NOT _GO_INPUT)
|
if(NOT _GENOUT_INPUT)
|
||||||
message(FATAL_ERROR "generate_out: Missing INPUT argument")
|
message(FATAL_ERROR "generate_out: Missing INPUT argument")
|
||||||
endif()
|
endif()
|
||||||
if(NOT _GO_OUTPUT)
|
if(NOT _GENOUT_OUTPUT)
|
||||||
message(FATAL_ERROR "generate_out: Missing OUTPUT argument")
|
message(FATAL_ERROR "generate_out: Missing OUTPUT argument")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Run genout.cmake to generate the .out file.
|
# Run genout.cmake to generate the .out file.
|
||||||
add_custom_command(OUTPUT "${_GO_OUTPUT}"
|
add_custom_command(OUTPUT "${_GENOUT_OUTPUT}"
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
"-DINPUT=${_GO_INPUT}"
|
"-DINPUT=${_GENOUT_INPUT}"
|
||||||
"-DOUTPUT=${_GO_OUTPUT}"
|
"-DOUTPUT=${_GENOUT_OUTPUT}"
|
||||||
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genout.cmake"
|
-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}")
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
@ -66,17 +66,17 @@ function(generate_source)
|
|||||||
set(options)
|
set(options)
|
||||||
set(oneValueArgs OUTPUT)
|
set(oneValueArgs OUTPUT)
|
||||||
set(multiValueArgs DEPENDS)
|
set(multiValueArgs DEPENDS)
|
||||||
cmake_parse_arguments(_GSO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
cmake_parse_arguments(_GENSRC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
if(NOT _GSO_OUTPUT)
|
if(NOT _GENSRC_OUTPUT)
|
||||||
message(FATAL_ERROR "generate_source: Missing OUTPUT argument")
|
message(FATAL_ERROR "generate_source: Missing OUTPUT argument")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Run gensrc.cmake to generate the source file.
|
# 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}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
"-DOUTPUT=${_GSO_OUTPUT}"
|
"-DOUTPUT=${_GENSRC_OUTPUT}"
|
||||||
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/gensrc.cmake"
|
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/gensrc.cmake"
|
||||||
DEPENDS ${_GSO_DEPENDS}
|
DEPENDS ${_GENSRC_DEPENDS}
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
@ -86,19 +86,19 @@ function(generate_copy)
|
|||||||
set(options)
|
set(options)
|
||||||
set(oneValueArgs INPUT OUTPUT)
|
set(oneValueArgs INPUT OUTPUT)
|
||||||
set(multiValueArgs DEPENDS)
|
set(multiValueArgs DEPENDS)
|
||||||
cmake_parse_arguments(_GCO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
cmake_parse_arguments(_GENCPY "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
if(NOT _GCO_INPUT)
|
if(NOT _GENCPY_INPUT)
|
||||||
message(FATAL_ERROR "generate_copy: Missing INPUT argument")
|
message(FATAL_ERROR "generate_copy: Missing INPUT argument")
|
||||||
endif()
|
endif()
|
||||||
if(NOT _GCO_OUTPUT)
|
if(NOT _GENCPY_OUTPUT)
|
||||||
message(FATAL_ERROR "generate_copy: Missing OUTPUT argument")
|
message(FATAL_ERROR "generate_copy: Missing OUTPUT argument")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Make a forced file copy, overwriting any pre-existing output file.
|
# 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}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
-E remove "${_GCO_OUTPUT}"
|
-E remove "${_GENCPY_OUTPUT}"
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
-E copy "${_GCO_INPUT}" "${_GCO_OUTPUT}"
|
-E copy "${_GENCPY_INPUT}" "${_GENCPY_OUTPUT}"
|
||||||
DEPENDS "${source}" ${_GCO_DEPENDS})
|
DEPENDS "${_GENCPY_INPUT}" ${_GENCPY_DEPENDS})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# genout.cmake.in
|
# genout.cmake.in
|
||||||
# Generate .out from .c with awk (generic), based upon the automake logic.
|
# 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
|
# Copyright (c) 2016 Glenn Randers-Pehrson
|
||||||
# Written by Roger Leigh, 2016
|
# Written by Roger Leigh, 2016
|
||||||
#
|
#
|
||||||
@ -16,6 +16,7 @@
|
|||||||
set(SRCDIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
set(SRCDIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
||||||
set(BINDIR "@CMAKE_CURRENT_BINARY_DIR@")
|
set(BINDIR "@CMAKE_CURRENT_BINARY_DIR@")
|
||||||
|
|
||||||
|
set(APPLE "@APPLE@")
|
||||||
set(AWK "@AWK@")
|
set(AWK "@AWK@")
|
||||||
set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@")
|
set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@")
|
||||||
set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@)
|
set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@)
|
||||||
|
@ -21,8 +21,8 @@ set(DFA_XTRA "@DFA_XTRA@")
|
|||||||
set(PNG_PREFIX "@PNG_PREFIX@")
|
set(PNG_PREFIX "@PNG_PREFIX@")
|
||||||
set(PNGLIB_VERSION "@PNGLIB_VERSION@")
|
set(PNGLIB_VERSION "@PNGLIB_VERSION@")
|
||||||
|
|
||||||
if(OUTPUT STREQUAL "scripts/pnglibconf.c")
|
if(OUTPUT MATCHES "(scripts/pnglibconf\\.c)\$")
|
||||||
# Generate scripts/pnglibconf.c
|
# Generate "${BINDIR}/scripts/pnglibconf.c"
|
||||||
|
|
||||||
file(REMOVE "${BINDIR}/pnglibconf.tf6" "${BINDIR}/pnglibconf.tf7")
|
file(REMOVE "${BINDIR}/pnglibconf.tf6" "${BINDIR}/pnglibconf.tf7")
|
||||||
|
|
||||||
@ -49,8 +49,8 @@ if(OUTPUT STREQUAL "scripts/pnglibconf.c")
|
|||||||
file(MAKE_DIRECTORY "${BINDIR}/scripts")
|
file(MAKE_DIRECTORY "${BINDIR}/scripts")
|
||||||
file(RENAME "pnglibconf.tf7" "${BINDIR}/scripts/pnglibconf.c")
|
file(RENAME "pnglibconf.tf7" "${BINDIR}/scripts/pnglibconf.c")
|
||||||
|
|
||||||
elseif(OUTPUT STREQUAL "pnglibconf.c")
|
elseif(OUTPUT MATCHES "(pnglibconf\\.c)\$")
|
||||||
# Generate pnglibconf.c
|
# Generate "${BINDIR}/pnglibconf.c"
|
||||||
|
|
||||||
file(REMOVE "${BINDIR}/pnglibconf.tf4" "${BINDIR}/pnglibconf.tf5")
|
file(REMOVE "${BINDIR}/pnglibconf.tf4" "${BINDIR}/pnglibconf.tf5")
|
||||||
|
|
||||||
@ -76,10 +76,10 @@ elseif(OUTPUT STREQUAL "pnglibconf.c")
|
|||||||
file(MAKE_DIRECTORY "${BINDIR}/scripts")
|
file(MAKE_DIRECTORY "${BINDIR}/scripts")
|
||||||
file(RENAME "pnglibconf.tf5" "${BINDIR}/pnglibconf.c")
|
file(RENAME "pnglibconf.tf5" "${BINDIR}/pnglibconf.c")
|
||||||
|
|
||||||
elseif(OUTPUT STREQUAL "pnglibconf.h")
|
elseif(OUTPUT MATCHES "(pnglibconf\\.h)\$")
|
||||||
# Generate pnglibconf.h
|
# Generate "${BINDIR}/pnglibconf.h"
|
||||||
|
|
||||||
file(REMOVE "${BINDIR}/${OUTPUT}")
|
file(REMOVE "${OUTPUT}")
|
||||||
if(PNG_PREFIX)
|
if(PNG_PREFIX)
|
||||||
file(REMOVE "pnglibconf.tf8")
|
file(REMOVE "pnglibconf.tf8")
|
||||||
|
|
||||||
@ -95,20 +95,21 @@ elseif(OUTPUT STREQUAL "pnglibconf.h")
|
|||||||
message(FATAL_ERROR "Failed to generate pnglibconf.tf8")
|
message(FATAL_ERROR "Failed to generate pnglibconf.tf8")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(RENAME "pnglibconf.tf8" "${BINDIR}/${OUTPUT}")
|
file(RENAME "pnglibconf.tf8" "${OUTPUT}")
|
||||||
else()
|
else()
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy "${BINDIR}/pnglibconf.out"
|
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy "pnglibconf.out"
|
||||||
"${BINDIR}/${OUTPUT}"
|
"${OUTPUT}"
|
||||||
|
WORKING_DIRECTORY "${BINDIR}"
|
||||||
RESULT_VARIABLE COPY_FAIL)
|
RESULT_VARIABLE COPY_FAIL)
|
||||||
if(COPY_FAIL)
|
if(COPY_FAIL)
|
||||||
message(FATAL_ERROR "Failed to create pnglibconf.h")
|
message(FATAL_ERROR "Failed to create pnglibconf.h")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
elseif(OUTPUT STREQUAL "pngprefix.h")
|
elseif(OUTPUT MATCHES "(pngprefix\\.h)\$")
|
||||||
# Generate pngprefix.h
|
# Generate "${BINDIR}/pngprefix.h"
|
||||||
|
|
||||||
file(REMOVE "${BINDIR}/${OUTPUT}")
|
file(REMOVE "${OUTPUT}")
|
||||||
|
|
||||||
if(PNG_PREFIX)
|
if(PNG_PREFIX)
|
||||||
file(REMOVE "pngprefix.tf1")
|
file(REMOVE "pngprefix.tf1")
|
||||||
@ -122,12 +123,12 @@ elseif(OUTPUT STREQUAL "pngprefix.h")
|
|||||||
message(FATAL_ERROR "Failed to generate pngprefix.tf1")
|
message(FATAL_ERROR "Failed to generate pngprefix.tf1")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(RENAME "pngprefix.tf1" "${BINDIR}/${OUTPUT}")
|
file(RENAME "pngprefix.tf1" "${OUTPUT}")
|
||||||
else()
|
else()
|
||||||
file(WRITE "${BINDIR}/${OUTPUT}" "/* No libpng symbol prefix configured. */")
|
file(WRITE "${OUTPUT}" "/* No libpng symbol prefix configured. */")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
elseif(OUTPUT STREQUAL "scripts/pnglibconf.h.prebuilt")
|
elseif(OUTPUT MATCHES "(scripts/pnglibconf\\.h\\.prebuilt)\$")
|
||||||
# Generate scripts/pnglibconf.h.prebuilt (fails build)
|
# Generate scripts/pnglibconf.h.prebuilt (fails build)
|
||||||
|
|
||||||
message(STATUS "Attempting to build scripts/pnglibconf.h.prebuilt")
|
message(STATUS "Attempting to build scripts/pnglibconf.h.prebuilt")
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
# Modeled after libxml-config.
|
# Modeled after libxml-config.
|
||||||
|
|
||||||
version=1.6.47
|
version=1.6.51.git
|
||||||
prefix=""
|
prefix=""
|
||||||
libdir=""
|
libdir=""
|
||||||
libs=""
|
libs=""
|
||||||
|
@ -5,6 +5,6 @@ includedir=@includedir@/libpng16
|
|||||||
|
|
||||||
Name: libpng
|
Name: libpng
|
||||||
Description: Loads and saves PNG files
|
Description: Loads and saves PNG files
|
||||||
Version: 1.6.47
|
Version: 1.6.51.git
|
||||||
Libs: -L${libdir} -lpng16
|
Libs: -L${libdir} -lpng16
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
||||||
|
@ -22,7 +22,8 @@ RM_F = rm -f
|
|||||||
|
|
||||||
# Compiler and linker flags
|
# Compiler and linker flags
|
||||||
NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \
|
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
|
STDC = -pedantic-errors -std=c89
|
||||||
WARN = -Wall -Wextra -Wundef
|
WARN = -Wall -Wextra -Wundef
|
||||||
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
||||||
|
@ -21,7 +21,8 @@ RM_F = rm -f
|
|||||||
|
|
||||||
# Compiler and linker flags
|
# Compiler and linker flags
|
||||||
NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \
|
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
|
STDC = -pedantic-errors # -std=c99
|
||||||
WARN = -Wall -Wextra -Wundef
|
WARN = -Wall -Wextra -Wundef
|
||||||
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
||||||
|
@ -28,7 +28,8 @@ RM_F=rm -f
|
|||||||
|
|
||||||
# Compiler and linker flags
|
# Compiler and linker flags
|
||||||
NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \
|
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
|
STDC = -pedantic-errors
|
||||||
WARN = -Wall -Wextra -Wundef
|
WARN = -Wall -Wextra -Wundef
|
||||||
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
||||||
|
@ -21,7 +21,8 @@ RM_F = rm -f
|
|||||||
|
|
||||||
# Compiler and linker flags
|
# Compiler and linker flags
|
||||||
NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \
|
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
|
STDC = -pedantic-errors # -std=c99
|
||||||
WARN = -Wall -Wextra -Wundef
|
WARN = -Wall -Wextra -Wundef
|
||||||
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
||||||
|
@ -26,7 +26,8 @@ RM_F=rm -f
|
|||||||
|
|
||||||
# Compiler and linker flags
|
# Compiler and linker flags
|
||||||
NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \
|
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
|
STDC = -pedantic-errors
|
||||||
WARN = -Wall -Wextra -Wundef
|
WARN = -Wall -Wextra -Wundef
|
||||||
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
||||||
|
@ -32,7 +32,8 @@ LN_SF = ln -sf
|
|||||||
|
|
||||||
# Compiler and linker flags
|
# Compiler and linker flags
|
||||||
NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \
|
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
|
STDC = -pedantic-errors
|
||||||
WARN = -Wall -Wextra -Wundef
|
WARN = -Wall -Wextra -Wundef
|
||||||
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
WARNMORE = -Wcast-align -Wconversion -Wshadow -Wpointer-arith -Wwrite-strings \
|
||||||
|
@ -23,7 +23,8 @@ RM_F = rm -f
|
|||||||
AWK = awk
|
AWK = awk
|
||||||
|
|
||||||
NOHWOPT = -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 \
|
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
|
DFNFLAGS = # DFNFLAGS contains -D options to use in the libpng build
|
||||||
DFA_EXTRA = # extra files that can be used to control configuration
|
DFA_EXTRA = # extra files that can be used to control configuration
|
||||||
CPPFLAGS = -I$(ZLIBINC) $(NOHWOPT) # -DPNG_DEBUG=5
|
CPPFLAGS = -I$(ZLIBINC) $(NOHWOPT) # -DPNG_DEBUG=5
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* pnglibconf.h - library build configuration */
|
/* pnglibconf.h - library build configuration */
|
||||||
|
|
||||||
/* libpng version 1.6.47 */
|
/* libpng version 1.6.51.git */
|
||||||
|
|
||||||
/* Copyright (c) 2018-2025 Cosmin Truta */
|
/* Copyright (c) 2018-2025 Cosmin Truta */
|
||||||
/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */
|
/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# test-driver - basic testsuite driver script.
|
# 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
|
# 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
|
# 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:
|
# Local Variables:
|
||||||
# mode: shell-script
|
# mode: shell-script
|
||||||
# sh-indentation: 2
|
# 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-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%Y-%02m-%02d.%02H"
|
||||||
# time-stamp-time-zone: "UTC0"
|
# time-stamp-time-zone: "UTC0"
|
||||||
# time-stamp-end: "; # UTC"
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user