diff --git a/ANNOUNCE b/ANNOUNCE index 416db10a3..c6c6be6a8 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,5 +1,5 @@ -Libpng 1.7.0beta26 - December 29, 2013 +Libpng 1.7.0beta26 - December 30, 2013 This is not intended to be a public release. It will be replaced within a few weeks by a public version or by another test version. @@ -468,7 +468,7 @@ Version 1.7.0beta25 [December 26, 2013] Merged files with version 1.6.8 that have not changed since then. Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69 -Version 1.7.0beta26 [December 29, 2013] +Version 1.7.0beta26 [December 30, 2013] Added libpng 1.5 checks to pngvalid.c Merged with 1.5 and 1.6 changes to create a single pngvalid.c Added dSIG to chunk list in png.h @@ -480,6 +480,11 @@ Version 1.7.0beta26 [December 29, 2013] Changed pngvalid.c to support libpng 1.5, which does not support the PNG_MAXIMUM_INFLATE_WINDOW option, so #define it out when appropriate in pngvalid.c + Allow unversioned links created on install to be disabled in configure. + In configure builds 'make install' changes/adds links like png.h + and libpng.a to point to the newly installed, versioned, files (e.g. + libpng17/png.h and libpng17.a). Three new configure options and some + rearrangement of Makefile.am allow creation of these links to be disabled. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/CHANGES b/CHANGES index fcc9d5c23..762a7d703 100644 --- a/CHANGES +++ b/CHANGES @@ -4757,7 +4757,7 @@ Version 1.7.0beta25 [December 26, 2013] Merged files with version 1.6.8 that have not changed since then. Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69 -Version 1.7.0beta26 [December 29, 2013] +Version 1.7.0beta26 [December 30, 2013] Added libpng 1.5 checks to pngvalid.c Merged with 1.5 and 1.6 changes to create a single pngvalid.c Added dSIG to chunk list in png.h @@ -4769,6 +4769,11 @@ Version 1.7.0beta26 [December 29, 2013] Changed pngvalid.c to support libpng 1.5, which does not support the PNG_MAXIMUM_INFLATE_WINDOW option, so #define it out when appropriate in pngvalid.c + Allow unversioned links created on install to be disabled in configure. + In configure builds 'make install' changes/adds links like png.h + and libpng.a to point to the newly installed, versioned, files (e.g. + libpng17/png.h and libpng17.a). Three new configure options and some + rearrangement of Makefile.am allow creation of these links to be disabled. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/Makefile.am b/Makefile.am index c7b5916b2..9efc20dff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -289,43 +289,74 @@ check: scripts/symbols.chk dist-hook: cd '$(top_distdir)'; rm -f $(SCRIPT_CLEANFILES) -# install the .../include headers as links to the new ones -install-data-hook: - cd '$(DESTDIR)$(includedir)'; rm -f png.h pngconf.h pnglibconf.h - cd '$(DESTDIR)$(includedir)'; $(LN_S) $(PNGLIB_BASENAME)/png.h png.h - cd '$(DESTDIR)$(includedir)'; $(LN_S) $(PNGLIB_BASENAME)/pngconf.h \ - pngconf.h - cd '$(DESTDIR)$(includedir)'; $(LN_S) $(PNGLIB_BASENAME)/pnglibconf.h \ - pnglibconf.h - cd '$(DESTDIR)$(pkgconfigdir)'; rm -f libpng.pc - cd '$(DESTDIR)$(pkgconfigdir)'; $(LN_S) $(PNGLIB_BASENAME).pc libpng.pc +# Make links between installed files with release-specific names and the generic +# file names. If this install rule is run the generic names will be deleted and +# recreated - this has obvious issues for systems with multiple installations. -# do evil things to libpng to cause libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@ to be used -install-exec-hook: - cd '$(DESTDIR)$(bindir)'; rm -f libpng-config - cd '$(DESTDIR)$(bindir)';\ - $(LN_S) $(PNGLIB_BASENAME)-config libpng-config - @set -x;\ - cd '$(DESTDIR)$(libdir)';\ - for ext in a la so so.@PNGLIB_MAJOR@@PNGLIB_MINOR@.@PNGLIB_RELEASE@\ - sl dylib dll.a; do\ - rm -f libpng.$$ext;\ - if test -f $(PNGLIB_BASENAME).$$ext; then\ - $(LN_S) $(PNGLIB_BASENAME).$$ext libpng.$$ext;\ - fi;\ +install-header-links: + @set -ex; cd '$(DESTDIR)$(includedir)'; for f in $(HEADERS); do \ + rm -f "$$f"; $(LN_S) "$(PNGLIB_BASENAME)/$$f" "$$f"; done + +uninstall-header-links: + cd '$(DESTDIR)$(includedir)'; rm -f $(HEADERS) + +install-libpng-pc: + @set -ex; cd '$(DESTDIR)$(pkgconfigdir)'; rm -f libpng.pc; \ + $(LN_S) '$(PNGLIB_BASENAME).pc' libpng.pc + +uninstall-libpng-pc: + rm -f '$(DESTDIR)$(pkgconfigdir)/libpng.pc' + +# 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 +# actually installed on a given system, so instead we check for every extension +# we have seen. + +EXT_LIST = a dll.a so so.@PNGLIB_MAJOR@@PNGLIB_MINOR@.@PNGLIB_RELEASE@ la sl dylib + +install-library-links: + @set -x; cd '$(DESTDIR)$(libdir)';\ + for ext in $(EXT_LIST); do\ + rm -f "libpng.$$ext";\ + if test -f "$(PNGLIB_BASENAME).$$ext"; then\ + $(LN_S) "$(PNGLIB_BASENAME).$$ext" "libpng.$$ext" || exit 1;\ + fi;\ done -uninstall-hook: - cd '$(DESTDIR)$(includedir)'; rm -f png.h pngconf.h pnglibconf.h - rm -f '$(DESTDIR)$(pkgconfigdir)/libpng.pc' +uninstall-library-links: + @set -x; cd '$(DESTDIR)$(libdir)'; for ext in $(EXT_LIST); do\ + rm -f "libpng.$$ext"; done + +install-libpng-config: + @set -ex; cd '$(DESTDIR)$(bindir)'; rm -f libpng-config; \ + $(LN_S) '$(PNGLIB_BASENAME)-config' libpng-config + +uninstall-libpng-config: rm -f '$(DESTDIR)$(bindir)/libpng-config' - rm -f '$(DESTDIR)$(libdir)/libpng.a' - rm -f '$(DESTDIR)$(libdir)/libpng.la' - rm -f '$(DESTDIR)$(libdir)/libpng.so' - rm -f '$(DESTDIR)$(libdir)/libpng.so.@PNGLIB_MAJOR@@PNGLIB_MINOR@.@PNGLIB_RELEASE@' - rm -f '$(DESTDIR)$(libdir)/libpng.sl' - rm -f '$(DESTDIR)$(libdir)/libpng.dylib' - rm -f '$(DESTDIR)$(libdir)/libpng.dll.a' + +if DO_INSTALL_LINKS +# If --enable-unversioned-links is specified the header and lib file links +# will be automatically made on a 'make install': + +install-data-hook: install-header-links +uninstall-hook: uninstall-header-links +install-exec-hook: install-library-links +uninstall-hook: uninstall-library-links +endif + +if DO_INSTALL_LIBPNG_PC +# Likewise, --install-pc causes libpng.pc to be constructed: + +install-data-hook: install-libpng-pc +uninstall-hook: uninstall-libpng-pc +endif + +if DO_INSTALL_LIBPNG_CONFIG +# And --install-config: + +install-exec-hook: install-libpng-config +uninstall-hook: uninstall-libpng-config +endif # The following addition ensures that 'make all' always builds the test programs # too. It used to, but some change either in libpng or configure stopped this diff --git a/configure.ac b/configure.ac index b3e512b81..30e47a5ba 100644 --- a/configure.ac +++ b/configure.ac @@ -137,12 +137,20 @@ AC_CHECK_FUNCS([memset memcpy strncpy],, # floor and ceil are required for FLOATING_POINT, but they can be turned off on # the configure command line (and they are independent.) Default is to 'on' -AC_ARG_ENABLE([floating-point],[Enable floating point APIs],, - [enable_floating_point=yes]) -AC_ARG_ENABLE([fixed-point],[Enable fixed point APIs],, - [enable_fixed_point=yes]) -AC_ARG_ENABLE([floating-arithmetic],[Use floating point arithmetic internally],, - [enable_floating_arithmetic=yes]) +AC_ARG_ENABLE([floating-point], + AS_HELP_STRING([[[--enabled-floating-point]]], + [Enable floating point APIs (default: yes)]),, + [enable_floating_point=yes]) + +AC_ARG_ENABLE([fixed-point], + AS_HELP_STRING([[[--enable-fixed-point]]], + [Enable fixed point APIs (default: yes)]),, + [enable_fixed_point=yes]) + +AC_ARG_ENABLE([floating-arithmetic], + AS_HELP_STRING([[[--enable-floating-arithmetic]]], + [Use floating point arithmetic internally (default: yes)]),, + [enable_floating_arithmetic=yes]) # Check for a requirement for math library support if test "$enable_floating_arithmetic" = yes @@ -334,6 +342,45 @@ AC_ARG_WITH(libpng-prefix, fi]) AM_CONDITIONAL([DO_PNG_PREFIX], [test "${with_libpng_prefix:-no}" != "no"]) +# Control over what links are made for installed files. Versioned files are +# always installed, when the following options are turned on corresponding +# unversioned links are also created (normally as symbolic links): +AC_ARG_ENABLE([unversioned-links], + AS_HELP_STRING([[[--enable-unversioned-links]]], + [Installed libpng header files are placed in a versioned subdirectory] + [and installed libpng library (including DLL) files are versioned.] + [If this option is enabled unversioned links will be created pointing to] + [the corresponding installed files. If you use libpng.pc or] + [libpng-config for all builds you do not need these links, but if you] + [compile programs directly they will typically #include and] + [link with -lpng; in that case you need the links.] + [The links can be installed manually using 'make install-header-links'] + [and 'make install-library-links' and can be removed using the] + [corresponding uninstall- targets. If you do enable this option every] + [libpng 'make install' will recreate the links to point to the just] + [installed version of libpng. The default is to create the links;] + [use --disable-unversioned-links to change this])) + +# The AM_CONDITIONAL test is written so that the default is enabled; +# --disable-unversioned-links must be given to turn the option off. +AM_CONDITIONAL([DO_INSTALL_LINKS],[test "$enable_unversioned_links" != "no"]) + +AC_ARG_ENABLE([unversioned-libpng-pc], + AS_HELP_STRING([[[--enable-unversioned-libpng-pc]]], + [Install the configuration file 'libpng.pc' as a link to the versioned] + [version. This is done by default - use --disable-unversioned-libpng-pc] + [to change this.])) +AM_CONDITIONAL([DO_INSTALL_LIBPNG_PC], + [test "$enable_unversioned_libpng_pc" != "no"]) + +AC_ARG_ENABLE([unversioned-libpng-config], + AS_HELP_STRING([[[--enable-unversioned-libpng-config]]], + [Install the configuration file 'libpng-config' as a link to the] + [versioned version. This is done by default - use] + [--disable-unversioned-libpng-config to change this.])) +AM_CONDITIONAL([DO_INSTALL_LIBPNG_CONFIG], + [test "$enable_unversioned_libpng_config" != "no"]) + # HOST SPECIFIC OPTIONS # ===================== #