From: Glenn Randers-P. <gl...@gm...> - 2013-03-28 02:22:51
|
Changes since the last public release (1.6.0): Made symbol prefixing work with the ARM neon optimizations. Also allow pngpriv.h to be included for preprocessor definitions only, so it can be used in non-C/C++ files. Back ported from libpng 1.7. Made sRGB check numbers consistent. Ported libpng 1.5 options.awk/dfn file handling to 1.6, fixed one bug. Removed cc -E workround, corrected png_get_palette_max API Tested on SUN OS cc 5.9, which demonstrates the tokenization problem previously avoided by using /lib/cpp. Since all .dfn output is now protected in double quotes unless it is to be macro substituted the fix should work everywhere. Enabled parallel tests - back ported from libpng-1.7. scripts/pnglibconf.dfa formatting improvements back ported from libpng17. Fixed a race condition in the creation of the build 'scripts' directory while building with a parallel make. Use approved/supported Android method to check for NEON, use Linux/POSIX 1003.1 API to check /proc/self/auxv avoiding buffer allocation and other library calls (ported from libpng15). Use parentheses more consistently in "#if defined(MACRO)" tests. Folded long lines. Reenabled code to allow zero length PLTE chunks for MNG. Fixed ALIGNED_MEMORY support. Allow run-time ARM NEON checking to be disabled. A new configure option: --enable-arm-neon=always will stop the run-time checks. New checks within arm/arm_init.c will cause the code not to be compiled unless __ARM_NEON__ is set. This should make it fail safe (if someone asks for it on then the build will fail if it can't be done.) Updated the INSTALL document. Revised INSTALL to recommend using CPPFLAGS instead of INCLUDES. Revised scripts/makefile.freebsd to respect ZLIBLIB and ZLIBINC. Revised scripts/dfn.awk to work with the buggy MSYS awk that has trouble with CRLF line endings. Avoid a possible memory leak in contrib/gregbook/readpng.c Better documentation of unknown handling API interactions. Corrected Android builds and corrected libpng.vers with symbol prefixing This adds an API to set optimization options externally, providing an alternative and general solution for the non-portable run-time tests used by the ARM Neon code. It also makes those tests compile and link on Android. The order of settings vs options in pnglibconf.h is reversed to allow settings to depend on options and options can now set (or override) the defaults for settings. Corrected simplified API default gamma for color-mapped output, added a flag to change default. In 1.6.0 when the simplified API was used to produce color-mapped output from an input image with no gamma information the gamma assumed for the input could be different from that assumed for non-color-mapped output. In particular 16-bit depth input files were assumed to be sRGB encoded, whereas in the 'direct' case they were assumed to have linear data. This was an error. The fix makes the simplified API treat all input files the same way and adds a new flag to the png_image::flags member to allow the application/user to specify that 16-bit files contain sRGB data rather than the default linear. Fixed bugs in the pngpixel and makepng test programs. Fixed CMakelists.txt to allow building a single variant of the library (Claudio Bley): Introduced a PNG_LIB_TARGETS variable that lists all activated library targets. It is an error if this variable ends up empty, ie. you have to build at least one library variant. Made the *_COPY targets only depend on library targets actually being build. Use PNG_LIB_TARGETS to unify a code path. Changed the CREATE_SYMLINK macro to expect the full path to a file as the first argument. When symlinking the filename component of that path is determined and used as the link target. Use copy_if_different in the CREATE_SYMLINK macro. Eliminated two warnings from the Intel C compiler. The warnings are technically valid, although a reasonable treatment of division would show it to be incorrect. Changes since the last public release (1.5.14): Enabled renaming of the extern (but not DLL exported) ARM filter functions. Also enabled inclusion of pngpriv.h in non-C files by preventing C/C++ specific definitions if PNG_VERSION_INFO_ONLY is defined. Added png_get_palette_max() function. Made a probably general fix for the preprocessing used to generate source files. This change might make the check for a special C preprocessor unnecessary, and it also eliminates the requirement for sed in the configure build process. Fix typo in Makefile.am, fix scripts/pnglibconf.mak and makefile.std Rebuilt Makefile.in, configure, etc., with autoconf-2.69 and automake-1.13 Fix 'setting' handling in options.awk and fixed palette_max API Remove SUN OS cc -E workround - no longer required Turn serial tests back on (recently turned off by autotools upgrade). Enclosed the new png_get_palette_max in #ifdef PNG_GET_PALETTE_MAX_SUPPORTED block, and revised pnglibconf.h and pnglibconf.h.prebuilt accordingly. Use approved/supported Android method to check for NEON, use Linux/POSIX 1003.1 API to check /proc/self/auxv avoiding buffer allocation and other library calls. Fixed a race condition in the creation of the build 'scripts' directory while building with a parallel make. Use parentheses more consistently in "#if defined(MACRO)" tests. Fixed PNG_ALIGN(ED)_MEMORY and add ability to turn off ARM_NEON runtime checks Updated the INSTALL document. Revised INSTALL to recommend using CPPFLAGS instead of INCLUDES. Revised scripts/makefile.freebsd to respect ZLIBLIB and ZLIBINC. Revised scripts/dfn.awk to work with the buggy MSYS awk that has trouble with CRLF line endings. Avoid a possible memory leak in contrib/gregbook/readpng.c Made the _SUPPORTED macro definitions consistent. The change made in libpng15 to #define *_SUPPORTED 1, to match the use of -D*_SUPPORTED (which means -D*_SUPPORTED=1) and avoid compiler warnings from GCC was made inconsistently and causes problems as a result, also some additions in pnglibconf.h.prebuilt were inconsistent (omitting the 1). This changes 1.5 back to the scheme used both before (1.4) and after (1.6). This might cause some build scripts to issue warnings, and might, in the extreme, cause some applications to fail (but they would fail anyway against 1.6). It seems safer to go for consistency, given the change in 1.6, not correctness here, particularly as 'make check' currently warns anyway on the symbols.dfn check because of the inconsistencies. Corrected Android builds and corrected libpng.vers with symbol prefixing This adds an API to set optimization options externally, providing an alternative and general solution for the non-portable run-time tests used by the ARM Neon code. It also makes those tests compile and link on Android. The order of settings vs options in pnglibconf.h is reversed to allow settings to depend on options and options can now set (or override) the defaults for settings. Fixed CMakelists.txt to allow building a single variant of the library (Claudio Bley): Introduced a PNG_LIB_TARGETS variable that lists all activated library targets. It is an error if this variable ends up empty, ie. you have to build at least one library variant. Made the *_COPY targets only depend on library targets actually being build. Use PNG_LIB_TARGETS to unify a code path. Changed the CREATE_SYMLINK macro to expect the full path to a file as the first argument. When symlinking the filename component of that path is determined and used as the link target. Use copy_if_different in the CREATE_SYMLINK macro. Eliminated two warnings from the Intel C compiler. The warnings are technically valid, although a reasonable treatment of division would show it to be incorrect. Glenn |