[libpng16] 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.
diff --git a/ANNOUNCE b/ANNOUNCE
index b79b076..4f8de69 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
-Libpng 1.6.9beta02 - December 29, 2013
+Libpng 1.6.9beta02 - 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.
@@ -42,7 +42,7 @@
Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69
in the tar distributions.
-Version 1.6.9beta02 [December 29, 2013]
+Version 1.6.9beta02 [December 30, 2013]
Added checks for libpng 1.5 to pngvalid.c. This supports the use of
this version of pngvalid in libpng 1.5
Merged with pngvalid.c from libpng-1.7 changes to create a single
@@ -54,6 +54,11 @@
Revised 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 7abfab1..f68158c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4767,7 +4767,7 @@
Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69
in the tar distributions.
-Version 1.6.9beta02 [December 29, 2013]
+Version 1.6.9beta02 [December 30, 2013]
Added checks for libpng 1.5 to pngvalid.c. This supports the use of
this version of pngvalid in libpng 1.5
Merged with pngvalid.c from libpng-1.7 changes to create a single
@@ -4779,6 +4779,11 @@
Revised 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 5ac0423..e69519d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -81,7 +81,7 @@
png.h pngconf.h pngdebug.h pnginfo.h pngpriv.h pngstruct.h pngusr.dfa
if PNG_ARM_NEON
- libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES += arm/arm_init.c\
+libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES += arm/arm_init.c\
arm/filter_neon.S arm/filter_neon_intrinsics.c
endif
@@ -287,43 +287,74 @@
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 dfdff33..c10a72a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -226,6 +226,45 @@
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 <png.h> 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
# =====================
#