diff options
-rw-r--r-- | bin/autom4te.in | 4 | ||||
-rw-r--r-- | tests/tools.at | 46 |
2 files changed, 49 insertions, 1 deletions
diff --git a/bin/autom4te.in b/bin/autom4te.in index 4c2b905c..64653a44 100644 --- a/bin/autom4te.in +++ b/bin/autom4te.in @@ -609,7 +609,9 @@ sub handle_output ($$) } $out->close(); - update_file ($scratchfile, $output, $force) + # Always update the file, even if it didn't change; + # Automake relies on this. + update_file ($scratchfile, $output, 1) if defined $scratchfile; # If no forbidden words, we're done. diff --git a/tests/tools.at b/tests/tools.at index 49710202..89b8b63b 100644 --- a/tests/tools.at +++ b/tests/tools.at @@ -662,6 +662,52 @@ arbitrary $text AT_CLEANUP +# autoconf: timestamp changes +# --------------------------- +# Automake needs autoconf to update the timestamp on the configure script +# whenever configure.ac or aclocal.m4 changes, even if the contents of the +# configure script have not changed. +AT_SETUP([autoconf: timestamp changes]) + +AT_DATA([aclocal.m4], +[[AC_DEFUN([local_KILROY], [# kilroy was here +]) +]]) + +AT_DATA_AUTOCONF([configure.ac], +[[AC_INIT +AC_PROG_CC +local_KILROY +AC_OUTPUT +]]) + +AT_CHECK_AUTOCONF + +cp configure configure.1 +sleep 1 +printf '%s\n' 'AC_LIBSOURCES([foo.c])dn@&t@l' >> configure.ac + +# This step must not use --force. +# We don't need to check shell syntax, because if all goes well, +# the script will be unchanged from what it was in the first autoconf +# pass, and that was already checked. +AT_CHECK_M4([autoconf]) +AT_CHECK([cmp configure configure.1]) +AT_CHECK([test configure -nt configure.1]) + +cp configure configure.2 +sleep 1 +printf '%s\n' \ + 'AC_DEFUN([unused_MACRO], [# bob was there too' \ + '])' >> aclocal.m4 + +# Same as above. +AT_CHECK_M4([autoconf]) +AT_CHECK([cmp configure configure.2]) +AT_CHECK([test configure -nt configure.2]) + +AT_CLEANUP + ## --------- ## ## ifnames. ## |