From 940b37b197835b60241571a3b0544849af98cd45 Mon Sep 17 00:00:00 2001 From: John Bowler Date: Fri, 4 Oct 2013 19:56:19 -0500 Subject: [PATCH] [libpng16] Made changes for compatibility with automake 1.14: 1) Added the 'compile' program to the list of programs that must be cleaned in autogen.sh 2) Added 'subdir-objects' which causes .c files in sub-directories to be compiled such that the corresponding .o files are also in the sub-directory. This is because automake 1.14 warns that the current behavior of compiling to the top level directory may be removed in the future. 3) Updated dependencies on pnglibconf.h to match the new .o locations and added all the files in contrib/libtests and contrib/tools that depend on pnglibconf.h 4) Added 'BUILD_SOURCES = pnglibconf.h'; this is the automake recommended way of handling the dependencies of sources that are machine generated; unfortunately it only works if the user does 'make all' or 'make check', so the dependencies (3) are still required. --- ANNOUNCE | 19 +++++++++++++++++-- CHANGES | 17 ++++++++++++++++- Makefile.am | 28 +++++++++++++++++++++++++--- autogen.sh | 3 ++- configure.ac | 2 +- 5 files changed, 61 insertions(+), 8 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index 5ff2350fd..634c9eadb 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,5 +1,5 @@ -Libpng 1.6.7beta02 - October 2, 2013 +Libpng 1.6.7beta02 - October 5, 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. @@ -46,7 +46,22 @@ Version 1.6.7beta01 [September 30, 2013] was never implemented. Merged pngunknown.c with 1.7 version and back ported 1.7 improvements/fixes -Version 1.6.7beta02 [October 2, 2013] +Version 1.6.7beta02 [October 5, 2013] + Made changes for compatibility with automake 1.14: + 1) Added the 'compile' program to the list of programs that must be cleaned + in autogen.sh + 2) Added 'subdir-objects' which causes .c files in sub-directories to be + compiled such that the corresponding .o files are also in the + sub-directory. This is because automake 1.14 warns that the + current behavior of compiling to the top level directory may be removed + in the future. + 3) Updated dependencies on pnglibconf.h to match the new .o locations and + added all the files in contrib/libtests and contrib/tools that depend + on pnglibconf.h + 4) Added 'BUILD_SOURCES = pnglibconf.h'; this is the automake recommended + way of handling the dependencies of sources that are machine generated; + unfortunately it only works if the user does 'make all' or 'make check', + so the dependencies (3) are still required. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/CHANGES b/CHANGES index 1837f72a2..d4b88c984 100644 --- a/CHANGES +++ b/CHANGES @@ -4660,7 +4660,22 @@ Version 1.6.7beta01 [September 30, 2013] was never implemented. Merged pngunknown.c with 1.7 version and back ported 1.7 improvements/fixes -Version 1.6.7beta02 [October 2, 2013] +Version 1.6.7beta02 [October 5, 2013] + Made changes for compatibility with automake 1.14: + 1) Added the 'compile' program to the list of programs that must be cleaned + in autogen.sh + 2) Added 'subdir-objects' which causes .c files in sub-directories to be + compiled such that the corresponding .o files are also in the + sub-directory. This is because automake 1.14 warns that the + current behavior of compiling to the top level directory may be removed + in the future. + 3) Updated dependencies on pnglibconf.h to match the new .o locations and + added all the files in contrib/libtests and contrib/tools that depend + on pnglibconf.h + 4) Added 'BUILD_SOURCES = pnglibconf.h'; this is the automake recommended + way of handling the dependencies of sources that are machine generated; + unfortunately it only works if the user does 'make all' or 'make check', + so the dependencies (3) are still required. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/Makefile.am b/Makefile.am index 74a33e672..565206ebb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,6 +12,16 @@ check_PROGRAMS= pngtest pngunknown pngstest pngvalid # Utilities - installed bin_PROGRAMS= pngfix png-fix-itxt +# This ensures that pnglibconf.h gets built at the start of 'make all' or +# 'make check', but it does not add dependencies to the individual programs, +# this is done below. +# +# IMPORTANT: always add the object modules of new programs to the list below +# because otherwise the sequence 'configure; make new-program' will *sometimes* +# result in the installed (system) pnglibconf.h being used and the result is +# always wrong and always very confusing. +BUILT_SOURCES = pnglibconf.h + pngtest_SOURCES = pngtest.c pngtest_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la @@ -194,9 +204,21 @@ $(srcdir)/scripts/pnglibconf.h.prebuilt: # The following is necessary to ensure that the local pnglibconf.h is used, not # an installed one (this can happen immediately after on a clean system if -# 'make test' is the first thing the user does.) -pngstest.o pngvalid.o pngtest.o pngunknown.o timepng.o: pnglibconf.h -pngfix.o png-fix-itxt.o: pnglibconf.h +# 'make test' is the first thing the user does.) Only files which include +# one of the png source files (typically png.h or pngpriv.h) need to be listed +# here: +pngtest.o: pnglibconf.h + +contrib/libtests/makepng.o: pnglibconf.h +contrib/libtests/pngstest.o: pnglibconf.h +contrib/libtests/pngunknown.o: pnglibconf.h +contrib/libtests/pngvalid.o: pnglibconf.h +contrib/libtests/readpng.o: pnglibconf.h +contrib/libtests/tarith.o: pnglibconf.h +contrib/libtests/timepng.o: pnglibconf.h + +contrib/tools/makesRGB.o: pnglibconf.h +contrib/tools/pngfix.o: pnglibconf.h # We must use -DPNG_NO_USE_READ_MACROS here even when the library may actually # be built with PNG_USE_READ_MACROS; this prevents the read macros from diff --git a/autogen.sh b/autogen.sh index decf0f56f..6d674d90f 100755 --- a/autogen.sh +++ b/autogen.sh @@ -74,7 +74,8 @@ done # # The autotools generated files: libpng_autotools_files="Makefile.in aclocal.m4 config.guess config.h.in\ - config.sub configure depcomp install-sh ltmain.sh missing test-driver" + config.sub configure depcomp install-sh ltmain.sh missing test-driver\ + compile" # # These are separate because 'maintainer-clean' does not remove them. libpng_libtool_files="scripts/libtool.m4 scripts/ltoptions.m4\ diff --git a/configure.ac b/configure.ac index 9fc88dde5..bd8a1239d 100644 --- a/configure.ac +++ b/configure.ac @@ -27,7 +27,7 @@ AC_CONFIG_MACRO_DIR([scripts]) # dist-xz requires automake 1.11 or later # 1.12.2 fixes a security issue in 1.11.2 and 1.12.1 # 1.13 is required for parallel tests -AM_INIT_AUTOMAKE([1.13 foreign dist-xz color-tests silent-rules]) +AM_INIT_AUTOMAKE([1.13 foreign dist-xz color-tests silent-rules subdir-objects]) # The following line causes --disable-maintainer-mode to be the default to # configure, this is necessary because libpng distributions cannot rely on the # time stamps of the autotools generated files being correct -- GitLab