From 773f3686f0baafe4e783e7e81ff83ec2a883f577 Mon Sep 17 00:00:00 2001
From: Albert Cheng <acheng@hdfgroup.org>
Date: Tue, 14 Apr 2009 17:07:24 -0500
Subject: [svn-r16749] New feature (Bug ID: 1345): Added a Make target of
 check-all-install to test the correctness of installing via the prefix= or
 $DESTDIR options.

Platforms tested:
h5committested and jam serial mode. Then test check-all-install by hand.
---
 Makefile.am              | 21 +++++++++++++++++++++
 Makefile.in              | 22 +++++++++++++++++++++-
 release_docs/RELEASE.txt |  2 ++
 3 files changed, 44 insertions(+), 1 deletion(-)

diff --git a/Makefile.am b/Makefile.am
index c0d6827..8e6a4ab 100755
--- a/Makefile.am
+++ b/Makefile.am
@@ -79,6 +79,9 @@ DIST_SUBDIRS = src test testpar tools . c++ fortran hl perform examples
 # Some files generated during configure that should be cleaned
 DISTCLEANFILES=config/stamp1 config/stamp2
 
+# Some files/directories generated during check that should be cleaned
+CHECK_CLEANFILES+=*-tmp
+
 # Define rules for lib, progs, check, and tests.
 # These simply involve recursing into subdirectories.
 test _test: check
@@ -113,6 +116,7 @@ check-clean:
 	   (cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1;            \
 	  fi;                                                           \
 	done
+	$(RM) -rf prefix-tmp destdir-tmp
 
 # Some C++ compilers/linkers will create a directory named ii_files in
 # the root directory, which should be cleaned.
@@ -150,6 +154,23 @@ installcheck-local:
 # check-install is just a synonym for installcheck
 check-install: installcheck
 
+# check-all-install tests installing default vs. prefix=<dir> vs. $DESTDIR.
+# Install via different mechanism and then compare against the default.
+# Fine if only libXXX.a files are different since they may have been ranlib'ed.
+check-all-install:
+	@echo Installing to default location
+	$(MAKE) install
+	@echo Installing to different prefix location
+	$(MAKE) prefix=${ROOT}/prefix-tmp install
+	@echo Compare against the default installation.
+	@echo Fine if only libXXX.a files are different.
+	-diff -r prefix-tmp ${prefix}
+	@echo Installing to different DESTDIR location
+	$(MAKE) DESTDIR=${ROOT}/destdir-tmp install
+	@echo Compare against the default installation.
+	@echo Fine if only libXXX.a files are different.
+	-diff -r destdir-tmp${prefix} ${prefix}
+
 # Only source files in the src directory include tracing information,
 # so 'make trace' only needs to recurse into that directory.
 trace:
diff --git a/Makefile.in b/Makefile.in
index 9ab76bd..d4addb4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -350,7 +350,9 @@ TRACE = perl $(top_srcdir)/bin/trace
 # .chkexe files are used to mark tests that have run successfully.
 # .chklog files are output from those tests.
 # *.clog are from the MPE option.
-CHECK_CLEANFILES = *.chkexe *.chklog *.clog
+
+# Some files/directories generated during check that should be cleaned
+CHECK_CLEANFILES = *.chkexe *.chklog *.clog *-tmp
 @BUILD_PARALLEL_CONDITIONAL_FALSE@TESTPARALLEL_DIR = 
 
 # Define subdirectories to build.
@@ -853,6 +855,7 @@ check-clean:
 	   (cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1;            \
 	  fi;                                                           \
 	done
+	$(RM) -rf prefix-tmp destdir-tmp
 
 # Some C++ compilers/linkers will create a directory named ii_files in
 # the root directory, which should be cleaned.
@@ -890,6 +893,23 @@ installcheck-local:
 # check-install is just a synonym for installcheck
 check-install: installcheck
 
+# check-all-install tests installing default vs. prefix=<dir> vs. $DESTDIR.
+# Install via different mechanism and then compare against the default.
+# Fine if only libXXX.a files are different since they may have been ranlib'ed.
+check-all-install:
+	@echo Installing to default location
+	$(MAKE) install
+	@echo Installing to different prefix location
+	$(MAKE) prefix=${ROOT}/prefix-tmp install
+	@echo Compare against the default installation.
+	@echo Fine if only libXXX.a files are different.
+	-diff -r prefix-tmp ${prefix}
+	@echo Installing to different DESTDIR location
+	$(MAKE) DESTDIR=${ROOT}/destdir-tmp install
+	@echo Compare against the default installation.
+	@echo Fine if only libXXX.a files are different.
+	-diff -r destdir-tmp${prefix} ${prefix}
+
 # Only source files in the src directory include tracing information,
 # so 'make trace' only needs to recurse into that directory.
 trace:
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 3783975..90d9c69 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -39,6 +39,8 @@ New Features
 
     Configuration:
     -------------
+    - Added a Make target of check-all-install to test the correctness of
+      installing via the prefix= or $DESTDIR options. AKC - 2009/04/14
     - Configuration suite now uses Libtool 2.2.6a. MAM 2008/10/24
 
     - Configuration suite now uses Autoconf 2.61, Automake 1.10.1. 
-- 
cgit v0.12