4321 Commits

Author SHA1 Message Date
Gabor Kertesz
efdb24e54b projects: Fix C2220 warning errors for VS2019
It sets warning level lower and not treat as errors because of
C2220 warnings are escalated to errors in Visual Studio 2019.
2022-09-13 01:23:52 +03:00
Gabor Kertesz
1f20bc1e85 projects: Upgrade to Visual Studio 2019 2022-09-13 01:23:52 +03:00
Gabor Kertesz
bbab57105b scripts: Add makefile for win-arm64
This makefile is based on makefile.vcwin32, but includes Neon
intrinsic optimization.

Co-authored-by: Gabor Kertesz <gabor.kertesz@linaro.org>
Co-authored-by: Cosmin Truta <ctruta@gmail.com>
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
2022-09-13 01:23:52 +03:00
Gabor Kertesz
a1a81cc2ac Fix arm neon config for win-arm64 with MSVC
Fixes #398
It adds win-arm64 as an arm64 platform, by using a define which
is set to 1 for compilations that target 64-bit ARM processors,
otherwise undefined.
2022-09-13 01:23:52 +03:00
Cosmin Truta
c3a1d8424c Update INSTALL 2022-09-13 00:56:32 +03:00
Samanta Navarro
eda0f47f46 Fix typo in libpng manual 2022-09-13 00:34:27 +03:00
Cosmin Truta
3848c73ab4 cmake: Refactor the PNGLIB variables that define the versioning scheme 2022-09-12 13:50:32 +03:00
Cosmin Truta
dd8db8105c cmake: Fix the shared build on Android
The ld version script should not be generated on Android.

Co-authored-by: Volker Krause <vkrause@kde.org>
Co-authored-by: Cosmin Truta <ctruta@gmail.com>
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
2022-09-10 23:50:49 +03:00
Cameron Cawley
763c77e628 cmake: Fix compilation on systems without libm
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
2022-09-10 22:31:28 +03:00
Christopher Sean Morrison
840af2eda6 cmake: Fix the build on Unix with source files checked out on Windows
The issue is that, by default, Git for Windows checks out text files
with CRLF line endings. This is a problem for awk, which is expecting
Unix-style LF line endings. When cloning on Windows and attempting to
compile on WSL, Mingw or Cygwin, there may be an error from awk.

The fix is to leverage CMake's ability to configure a file and perform
EOL conversions. We copy the awk scripts from the source directory to
the build directory. This portable method ensures they have LF endings,
and the build logic is updated to use the build directory version.

Intentionally avoiding .gitattributes to avoid setting precedent.

Co-authored-by: Christopher Sean Morrison <brlcad@gmail.com>
Co-authored-by: Cosmin Truta <ctruta@gmail.com>
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
2022-09-10 22:02:00 +03:00
Owen Rudge
8a354b41e9 cmake: Fix cross-compilation on macOS
Co-authored-by: Owen Rudge <owen@owenrudge.net>
Co-authored-by: Cosmin Truta <ctruta@gmail.com>
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
2022-09-10 21:31:13 +03:00
Cosmin Truta
0fe598d2f6 cmake: Rename the target "symbol-check" to "scripts_symbols_chk"
Follow the general conventions for naming CMake targets.
2022-09-10 20:45:21 +03:00
Gleb Mazovetskiy
cbf8c64b58 cmake: Correctly handle generated files
Generated files depend on other generated files, and this previously
resulted in the same custom command output being a dependency of
multiple other custom commands without a shared custom targets.

Adds a top-level target for each generated file and ensures that
commands that depend on generated files also depend on the corresponding
custom targets.

Per CMake documentation:

> Do not list the output in more than one independent target
> that may build in parallel or the two instances of the rule
> may conflict (instead use add_custom_target to drive the command
> and make the other targets depend on that one).

Signed-off-by: Cosmin Truta <ctruta@gmail.com>
2022-09-10 20:39:05 +03:00
Cosmin Truta
6a42bc1c8e configure: Initialize PNG_ARM_NEON_OPT and PNG_MIPS_MSA_OPT correctly 2022-09-05 21:03:20 +03:00
Cosmin Truta
9e32b6f1ad Rerun "./autogen.sh --maintainer" 2022-09-05 17:30:06 +03:00
Cosmin Truta
cc0e959722 Clean up configure.ac
Remove the obsolete autoconf macros:
AC_C_CONST, AC_HEADER_STDC, AC_TYPE_SIZE_T, AC_FUNC_STRTOD.

Clean up comments and whitespace.
2022-09-05 17:30:06 +03:00
Dan Field
403422674d Remove obsolete/incorrect __LLVM,__asm section
Contributed-by: Dan Field <dnfield@google.com>
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
2022-09-05 13:46:00 +03:00
Cosmin Truta
bfb0abe4d9 Update the configuration for Travis CI and AppVeyor CI
Apply the following changes:
 * Add FreeBSD (besides Linux and Mac) to the Travis CI testing.
 * Use cc instead of clang for Xcode in the Travis CI testing.
 * Upgrade the Windows test image from Visual Studio 2019 to
   Visual Studio 2022 for AppVeyor CI.
2022-09-04 20:21:30 +03:00
Cosmin Truta
081e6751ab ci: Update the CI scripts
Apply the following changes:
 * Set CI_CMAKE_GENERATOR to "Ninja" by default in ci_cmake.sh.
 * Set CI_CC to cc by default in ci_autotools.sh.
 * Rename CI_SYSNAME to CI_SYSTEM_NAME; add CI_MACHINE_NAME.
 * Apply other minor changes and fixes.
2022-09-04 19:41:33 +03:00
Cosmin Truta
103f8346e3 cmake: Set PNG_ARM_NEON to "on" by default on ARM64
Avoid build failures on all ARM64-based non-Linux systems.
PNG_ARM_NEON can be set to "check" on Linux/ARM32 only.
2022-08-26 03:27:42 +03:00
Cosmin Truta
723b2d9f2e Update the copyright year 2022-08-26 03:12:35 +03:00
Cosmin Truta
b7ea74c97d Update the copyright year 2021-03-15 20:23:26 -04:00
Cosmin Truta
8c3fdb0ac1 ci: Update the CI scripts
Implement the following updates:
 * Add CI_SYSNAME and set it to `uname -s`.
 * Set the default CI_CC value to "clang" on all BSD systems.
 * Replace CI_SRCDIR_REL_BUILDDIR and CI_INSTALLDIR_REL_BUILDDIR
   with CI_SRCDIR_NATIVE and CI_INSTALLDIR_NATIVE.
   The former variables were hard-coded and error-prone; the new
   variables are computed and safe to use.
2021-03-15 20:23:26 -04:00
Ben Bullock
a37d483651 Eliminate spaces between function name and ( 2021-03-13 02:37:00 -05:00
Ben Bullock
3796518809 Remove duplicate line 2021-03-13 02:37:00 -05:00
Ben Bullock
8ca01083d6 Fix typo in README 2021-03-13 02:37:00 -05:00
Ben Bullock
cd03aaf7bf Remove second call to write_eXIf
The second call to write_eXIf doesn't check whether the first call
succeeded; no other chunks except tIME and the text chunks seem to be
doubled like this.

The second call causes the eXIf chunk to incorrectly be written twice.
2021-03-13 02:37:00 -05:00
Qiang Zhou
c4bd411c35 Fix decode fail on image with invalid eXIf chunk 2021-03-13 02:10:50 -05:00
Kleber Tarcísio
2224c8ea7b Add a check to pngimage.c
Check the result of png_get_IHDR inside the compare_read function.

Contributed-by: Kleber Tarcísio
Signed-off-by: Cosmin Truta
2021-03-13 01:56:32 -05:00
Cosmin Truta
e2bb5e7512 contrib: Apply various fixes to libtests
pngimage.c:
Initialize sig_bits on a NOTREACHED path to avoid warnings about using
uninitialized variables.

pngstest.c:
Enlarge buffers and fix signedness to avoid legitimate warnings about
potential buffer overflows.

pngunknown.c:
pngvalid.c:
Use NULL instead of 0 for pointers and apply other style fixes.

makepng.c:
tarith.c:
Apply various style fixes.

Also remove the "last changed" version info from source comments.
The version control system maintains this information automatically.
2021-03-12 22:54:32 -05:00
Cosmin Truta
d6e13b2acd .gitignore: Add 2020-12-31 04:08:35 -05:00
Cosmin Truta
c2e2cd2ec5 ci: Fix the Visual Studio verification on AppVeyor CI
The Unix paths in Bash do not mix well with the Windows paths in CMake.
The uppercase and the lowercase environment variables do not mix well
in MSBuild. Et cetera.

On AppVeyor CI, verification of Windows builds with the Visual Studio
toolchain used to work, perhaps due to one or more lucky coincidences,
but it stopped working after an upgrade on the AppVeyor CI site.

Update ci_cmake.sh as follows:
 * Use POSIX commands like "mkdir" and "rm" instead of CMake commands
   like "make_directory" and "remove_directory".
 * Avoid using absolute paths in the CMake command line; use relative
   paths that are accessible from both Bash and Windows.
 * Clean up incidental mixtures of Windows and Bash-on-Windows
   environment variables like {$TEMP,$Temp,$temp} and {$TMP,$Tmp,$tmp}.
2020-12-31 03:29:11 -05:00
Cosmin Truta
c3f209178b ci: Recognize more CI_ variables for better cross-platform verification
For ci_autotools.sh, customize CPP, CPPFLAGS, AR, RANLIB, LD, LDFLAGS
via CI_CPP, CI_CPP_FLAGS, CI_AR, CI_RANLIB, CI_LD, CI_LD_FLAGS.

For ci_cmake.sh and ci_legacy.sh, customize AR, AR_RC and RANLIB via
CI_AR and CI_RANLIB.

Rewrite portions of ci_legacy.sh to match the style of ci_cmake.sh.
2020-12-31 00:41:01 -05:00
Cristian Rodríguez
dbe3e0c43e libpng.pc.in: zlib dependency is private
zlib should be injected only when pkgconfig is ran with the --static
option.
2020-05-24 23:28:35 -04:00
Cosmin Truta
2f753e260c ci: Verify the install target
Add support for the install target in ci_autotools.sh and ci_cmake.sh.
Also add the environment option CI_NO_INSTALL.
2020-05-24 22:09:45 -04:00
Cosmin Truta
f5d5f5ae0e cmake: Refactor the install target; reformat
Use standard CMake variables in the install target.
Reformulate comments and error messages.
Move all CMake keywords in front of their arguments.
Fix indentation.
2020-05-24 22:01:40 -04:00
Cosmin Truta
3676fd324a ci: Add a new top-level directory, dedicated for CI verification
Update the ci_*.sh scripts and move them to the more conventional
ci/ directory. Update .appveyor.yml and .travis.yml, as well as
the AUTHORS file, accordingly.

Speed up ci_cmake.sh: add "-DPNG_TESTS=OFF" to the list of CMake
variables if CI_NO_TEST is true.

Remove "sudo: false" from .travis.yml.

Refactor .appveyor.yml.
2020-05-18 21:30:30 -04:00
Alex Gaynor
28c0f8895e cmake: Add an option to enable/disable building of executables
Add the CMake option PNG_EXECUTABLES (on by default) in order to
allow or disallow the building of non-essential executable programs
associated with libpng.

Contributed-by: Alex Gaynor <alex.gaynor@gmail.com>
Contributed-by: Cosmin Truta <ctruta@gmail.com>
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
2020-05-18 18:46:32 -04:00
Cosmin Truta
87378bc21d mips: Remove "last changed" version information from source comment
This information is maintained by the version control system.
2020-05-17 20:26:28 -04:00
gxw
6c6f7d105a mips: Fix initialization: always close "/proc/cpuinfo" 2020-05-17 20:26:28 -04:00
Simon Hausmann
6842c58adc Fix CMake build with Emscripten
When building with Emscripten, linkage to libm is neither required
nor working. As find_library will fail, M_LIBRARY will be set to
NOTFOUND and the build would fail later. The build works just fine
without libm linkage.
2020-05-17 20:13:17 -04:00
Dan Field
a6fc80300f Add an __LLVM,__asm section for clang builds on ARM 2020-05-17 20:00:46 -04:00
Steve Robinson
5e8b45c436 cmake: Fix a build error on iOS
Avoid the awk-based configuration when cross-compiling from macOS
to iOS.
2020-05-17 19:50:18 -04:00
Zack Middleton
6dd99ca9c8 Fix example.c 2020-04-27 01:27:07 -04:00
willson-chen
52ee167644 Fix a warning on Linux caused by _BSD_SOURCE
I got a warning while compiling under Ubuntu 18.04 and gcc 7.4:
"__BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"

Quote from the Linux Programmer's Manual:
"To allow code that requires _BSD_SOURCE in glibc 2.19 and earlier and
_DEFAULT_SOURCE in glibc 2.20 and later to compile without warnings,
define both _BSD_SOURCE and _DEFAULT_SOURCE."
2020-04-27 00:46:06 -04:00
skal
eb6767273a Fix memory leak if eXIf has incorrect crc
Problem description:
Imagine a bitstream with an eXIf data segment that has invalid CRC.
If png_crc_finish() fails at line 2090, info_ptr->eXIf_buf is not freed
(despite the free_me setting at line 2062) because png_free_data() is
not called. png_read_info() is actually looping several time over the
png_eXIf chunk, calling png_handle_eXIf() several time in a row without
freeing the buffer.

This patch fixes the problem by leaving info_ptr's content in a clean
state in case of failure, as it is done at line 2084.
2020-04-27 00:16:36 -04:00
David Callu
9f734b13f4 cmake: Use the correct ZLIB_* variable names
ZLIB_LIBRARIES and ZLIB_INCLUDE_DIRS are the official cmake variable
names.
2020-04-26 23:54:11 -04:00
Cosmin Truta
3cec1a16f5 scripts: Clean up the makefiles
Delete variables (ALIGN, ARCH, DOCS) and targets (writelock) that are
no longer necessary.

Reorder the object file lists alphabetically, consistently across all
makefiles and build scripts.

Apply other minor fixes.
2020-03-29 23:58:29 -04:00
Cosmin Truta
50bd1abdb1 scripts: Fix makefile.std and include it in the CI verification 2020-03-29 22:26:32 -04:00
Cosmin Truta
2dd5630eae Update configuration for Travis CI; add configuration for AppVeyor CI
Exclude the branch "libpng16" from testing. It's identical to "master".
Also exclude the other (non-current) "libpng[0-1][0-7]" branches.

Parallelize the builds and the unit tests.

For Travis CI, update the build matrix as follows:
 * On Linux, use both clang and gcc.
 * On macOS, use clang only, with and without Xcode.

For AppVeyor CI, add a build matrix as follows:
 * On Windows, use Microsoft Visual Studio 2019 on x86, x64 and arm64.
 * Also on Windows, use MSYS2 on x86 and x64.

Use the new scripts/ci_*.sh; remove the old scripts/travis.sh.
2020-03-29 01:11:42 -04:00