Revert recent libpng changes.

They fix only bugs that aren't being reported, so it may be better
to do them on the trunk.
* configure.ac (PNG_CFLAGS): Remove.  All uses removed.
(LIBPNG): Don't be consistent about -lpng16 versus -lpng.
Ignore libpng-config's exit status.  Always append -lz -lm.
* src/Makefile.in (PNG_CFLAGS): Remove; all uses removed.
* src/image.c [HAVE_LIBPNG_PNG_H]: Include <libpng/png.h>, not <png.h>.

Fixes: debbugs:17339
This commit is contained in:
Paul Eggert 2014-05-04 11:51:32 -07:00
parent ec5f5b309d
commit 61febcb6e3
5 changed files with 63 additions and 56 deletions

View file

@ -1,5 +1,12 @@
2014-05-04 Paul Eggert <eggert@cs.ucla.edu>
Revert recent libpng changes (Bug#17339).
They fix only bugs that aren't being reported, so it may be better
to do them on the trunk.
* configure.ac (PNG_CFLAGS): Remove. All uses removed.
(LIBPNG): Don't be consistent about -lpng16 versus -lpng.
Ignore libpng-config's exit status. Always append -lz -lm.
* configure.ac (LIBPNG): Add -lz -lm on platforms where they're needed
but libpng-config --libs omits them. Problem reported by Glenn
Morris.

View file

@ -3068,70 +3068,62 @@ AC_SUBST(LIBJPEG)
### mingw32 doesn't use -lpng, since it loads the library dynamically.
HAVE_PNG=no
LIBPNG=
PNG_CFLAGS=
if test "${opsys}" = "mingw32"; then
if test "${with_png}" != "no"; then
AC_CHECK_HEADER([png.h], [HAVE_PNG=yes])
AC_CHECK_HEADER(png.h, HAVE_PNG=yes, HAVE_PNG=no)
fi
if test "${HAVE_PNG}" = "yes"; then
AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
AC_CHECK_DECL(png_longjmp,
[],
[AC_DEFINE(PNG_DEPSTRUCT, [],
[Define to empty to suppress deprecation warnings when building
with --enable-gcc-warnings and with libpng versions before 1.5,
which lack png_longjmp.])],
[[#ifdef HAVE_LIBPNG_PNG_H
# include <libpng/png.h>
#else
# include <png.h>
#endif
]])
fi
elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
if test "${with_png}" != "no"; then
dnl NetBSD 6 provides libpng16, not libpng.
if png_cflags=`(libpng-config --cflags) 2>&AS_MESSAGE_LOG_FD` &&
png_libs=`(libpng-config --libs) 2>&AS_MESSAGE_LOG_FD`
then
# On some platforms, LIBPNG must also contain -lz -lm.
SAVE_CFLAGS=$CFLAGS
SAVE_LIBS=$LIBS
CFLAGS="$CFLAGS $png_cflags"
for png_libextras in '' ' -lz -lm'; do
LIBS="$png_libs$png_libextras $SAVE_LIBS"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[#include <png.h>
]],
[[return png_get_channels (0, 0);]])],
[HAVE_PNG=yes
PNG_CFLAGS=`AS_ECHO(["$png_cflags"]) | sed -e "$edit_cflags"`
LIBPNG=$png_libs$png_libextras])
test $HAVE_PNG = yes && break
done
CFLAGS=$SAVE_CFLAGS
LIBS=$SAVE_LIBS
fi
if test $HAVE_PNG != yes; then
# libpng-config does not work; configure it by hand.
# Debian unstable as of July 2003 has multiple libpngs, and puts png.h
# in /usr/include/libpng.
AC_CHECK_HEADERS([png.h libpng/png.h],
[AC_CHECK_LIB([png], [png_get_channels],
[HAVE_PNG=yes
LIBPNG='-lpng -lz -lm'
if test "$ac_cv_header_libpng_png_h" = yes; then
PNG_CFLAGS=-I/usr/include/libpng
fi],
[],
[-lz -lm])
break])
# Debian unstable as of July 2003 has multiple libpngs, and puts png.h
# in /usr/include/libpng.
AC_CHECK_HEADERS(png.h libpng/png.h, break)
if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
fi
fi
fi
if test $HAVE_PNG = yes; then
AC_DEFINE([HAVE_PNG], [1], [Define to 1 if you have the png library.])
SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $PNG_CFLAGS"
AC_CHECK_DECL([png_longjmp],
[],
[AC_DEFINE([PNG_DEPSTRUCT], [],
[Define to empty to suppress deprecation warnings when building
with --enable-gcc-warnings and with libpng versions before 1.5,
which lack png_longjmp.])],
[[#include <png.h>
]])
CFLAGS=$SAVE_CFLAGS
if test "${HAVE_PNG}" = "yes"; then
AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library.])
dnl Some systems, eg NetBSD 6, only provide eg "libpng16", not "libpng".
lpng=`libpng-config --libs 2> /dev/null`
case $lpng in
-l*) : ;;
*) lpng="-lpng" ;;
esac
LIBPNG="$lpng -lz -lm"
AC_CHECK_DECL(png_longjmp,
[],
[AC_DEFINE(PNG_DEPSTRUCT, [],
[Define to empty to suppress deprecation warnings when building
with --enable-gcc-warnings and with libpng versions before 1.5,
which lack png_longjmp.])],
[[#ifdef HAVE_LIBPNG_PNG_H
# include <libpng/png.h>
#else
# include <png.h>
#endif
]])
fi
fi
AC_SUBST(LIBPNG)
AC_SUBST(PNG_CFLAGS)
HAVE_ZLIB=no
LIBZ=

View file

@ -1,3 +1,9 @@
2014-05-04 Paul Eggert <eggert@cs.ucla.edu>
Revert recent libpng changes (Bug#17339).
* Makefile.in (PNG_CFLAGS): Remove; all uses removed.
* image.c [HAVE_LIBPNG_PNG_H]: Include <libpng/png.h>, not <png.h>.
2014-05-03 Paul Eggert <eggert@cs.ucla.edu>
Handle systems without WCONTINUED consistently. (Bug#15110, 17339)

View file

@ -77,7 +77,6 @@ C_SWITCH_MACHINE=@C_SWITCH_MACHINE@
C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@
GNUSTEP_CFLAGS=@GNUSTEP_CFLAGS@
PNG_CFLAGS=@PNG_CFLAGS@
## Define C_SWITCH_X_SITE to contain any special flags your compiler
## may need to deal with X Windows. For instance, if you've defined
@ -326,7 +325,6 @@ ALL_CFLAGS=-Demacs $(MYCPPFLAGS) -I. -I$(srcdir) \
-I$(lib) -I$(srcdir)/../lib \
$(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \
$(GNUSTEP_CFLAGS) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \
$(PNG_CFLAGS) \
$(LIBXML2_CFLAGS) $(DBUS_CFLAGS) $(XRANDR_CFLAGS) $(XINERAMA_CFLAGS) \
$(SETTINGS_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \
$(LIBOTF_CFLAGS) $(M17N_FLT_CFLAGS) $(DEPFLAGS) \

View file

@ -22,8 +22,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <unistd.h>
#ifdef HAVE_PNG
#if defined HAVE_LIBPNG_PNG_H
# include <libpng/png.h>
#else
# include <png.h>
#endif
#endif
#include <setjmp.h>
#include <c-ctype.h>