I work on a set of projects that share header files, and I have found it quite useful to spare compilation cycles by using
AC_SUBST([INSTALL_HEADER], ['$(SHELL) $(install_sh_DATA) -C']) i.e., adding an option -C to install-sh to have a behavior similar to move-if-change. The name of the option is modeled after BSD install's -C. The later is able to upgrade perms when they have changed (but the contents are the same), while preserving the time stamps. install-sh tries to avoid changing owner groups etc. on the installed file, rather it runs these commands on a tmp file. So I did not try to reproduce the behavior of BSD install. GNU install does not seem to support a similar option.
diffs.patch
Description: Binary data