From: Tom Tromey Date: Sat, 21 Jul 2001 05:27:26 +0000 (+0000) Subject: * m4/header.m4 (AM_CONFIG_HEADER): Create stamp-h files in the correct X-Git-Tag: Release-1-4j~29 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=66da7d247469699f5bcfefbbc5fbf787bc1d191d;p=automake.git * m4/header.m4 (AM_CONFIG_HEADER): Create stamp-h files in the correct locations. * tests/dirname.test: New test. * tests/stamph2.test: New test. * tests/Makefile.am: Add new tests. * tests/Makefile.in: Regenerated. --- diff --git a/ChangeLog b/ChangeLog index 5d0366c8..77cc721c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2001-07-20 Derek Price + + * m4/header.m4 (AM_CONFIG_HEADER): Create stamp-h files in the correct + locations. + * tests/dirname.test: New test. + * tests/stamph2.test: New test. + * tests/Makefile.am: Add new tests. + * tests/Makefile.in: Regenerated. + 2001-07-19 Tom Tromey * automake.texi (Tags): Document GTAGS_ARGS. diff --git a/m4/header.m4 b/m4/header.m4 index c82b6a7e..f8e065fe 100644 --- a/m4/header.m4 +++ b/m4/header.m4 @@ -10,19 +10,57 @@ AC_PREREQ([2.12]) AC_DEFUN([AM_CONFIG_HEADER], +[ifdef([AC_FOREACH],dnl + [dnl init our file count if it isn't already + m4_ifndef([_AM_Config_Header_Index], m4_define([_AM_Config_Header_Index], [0])) + dnl prepare to store our destination file list for use in config.status + AC_FOREACH([_AM_File], [$1], + [m4_pushdef([_AM_Dest], m4_patsubst(_AM_File, [:.*])) + m4_define([_AM_Config_Header_Index], m4_incr(_AM_Config_Header_Index)) + dnl and add it to the list of files AC keeps track of, along + dnl with our hook + AC_CONFIG_HEADERS(_AM_File, +dnl COMMANDS, [, INIT-CMDS] +[# update the timestamp +echo timestamp >"AS_ESCAPE(_AM_DIRNAME(]_AM_Dest[))/stamp-h]_AM_Config_Header_Index[" +][$2]m4_ifval([$3], [, [$3]]))dnl AC_CONFIG_HEADERS + m4_popdef([_AM_Dest])])],dnl [AC_CONFIG_HEADER([$1]) AC_OUTPUT_COMMANDS( ifelse(patsubst([$1], [[^ ]], []), [], [test -z "$CONFIG_HEADERS" || echo timestamp >dnl - patsubst([$1], [^\([^:]*/\)?.*], [\1])stamp-h]), - [am_indx=1 - for am_file in $1; do - case " $CONFIG_HEADERS " in - *" $am_file "*) - echo timestamp > `echo $am_file | sed 's%:.*%%;s%[^/]*$%%'`stamp-h$am_indx - ;; - esac - am_indx=\`expr \$am_indx + 1\` - done]) -]) + patsubst([$1], [^\([^:]*/\)?.*], [\1])stamp-h]),dnl +[am_indx=1 +for am_file in $1; do + case " \$CONFIG_HEADERS " in + *" \$am_file "*) + am_dir=\`echo \$am_file |sed 's%:.*%%;s%[^/]*\$%%'\` + if test -n "\$am_dir"; then + am_tmpdir=\`echo \$am_dir |sed 's%^\(/*\).*\$%\1%'\` + for am_subdir in \`echo \$am_dir |sed 's%/% %'\`; do + am_tmpdir=\$am_tmpdir\$am_subdir/ + if test ! -d \$am_tmpdir; then + mkdir \$am_tmpdir + fi + done + fi + echo timestamp > "\$am_dir"stamp-h\$am_indx + ;; + esac + am_indx=\`expr \$am_indx + 1\` +done]) +])]) # AM_CONFIG_HEADER + +# _AM_DIRNAME(PATH) +# ----------------- +# Like AS_DIRNAME, only do it during macro expansion +AC_DEFUN([_AM_DIRNAME], + [m4_if(m4_regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, + m4_if(m4_regexp([$1], [^//\([^/]\|$\)]), -1, + m4_if(m4_regexp([$1], [^/.*]), -1, + [.], + m4_patsubst([$1], [^\(/\).*], [\1])), + m4_patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), + m4_patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl +]) # _AM_DIRNAME diff --git a/tests/Makefile.am b/tests/Makefile.am index 3c9d2623..49271485 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -103,6 +103,7 @@ depend.test \ depend2.test \ depend3.test \ depend4.test \ +dirname.test \ discover.test \ distcommon.test \ distdir.test \ @@ -250,6 +251,7 @@ spell2.test \ spell3.test \ spelling.test \ stamph.test \ +stamph2.test \ stdlib.test \ subdir.test \ subdir2.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index d2493891..a73a5e60 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -169,6 +169,7 @@ depend.test \ depend2.test \ depend3.test \ depend4.test \ +dirname.test \ discover.test \ distcommon.test \ distdir.test \ @@ -316,6 +317,7 @@ spell2.test \ spell3.test \ spelling.test \ stamph.test \ +stamph2.test \ stdlib.test \ subdir.test \ subdir2.test \ diff --git a/tests/dirname.test b/tests/dirname.test new file mode 100755 index 00000000..8b2ebfc4 --- /dev/null +++ b/tests/dirname.test @@ -0,0 +1,43 @@ +#! /bin/sh + +# Test the operation of the _AM_DIRNAME macro from m4/header.m4 + +. $srcdir/defs || exit 1 + +cat > configure.in << 'END' +AC_PLAIN_SCRIPT +echo "1 /a/path/to/a/file = _AM_DIRNAME([/a/path/to/a/file])" +echo "2 another/path/to/a/file = _AM_DIRNAME([another/path/to/a/file])" +echo "3 file = _AM_DIRNAME([file])" +echo "4 // = _AM_DIRNAME([//])" +echo "5 //file = _AM_DIRNAME([//file])" +echo "6 / = _AM_DIRNAME([/])" +echo "7 /file = _AM_DIRNAME([/file])" +END + +# Fail gracefully if no autoconf. +$needs_autoconf + +$ACLOCAL || exit 1 +$AUTOCONF || exit 1 + +# fail gracefully if autoconf didn't support AC_PLAIN_SCRIPT, because it won't +# support our regexps anyhow +test -s configure || exit 77 + +./configure >got || exit 1 + +cat >wanted < configure.in << 'END' +AC_INIT(Makefile.am) +AM_INIT_AUTOMAKE(nonesuch, nonesuch) +AM_CONFIG_HEADER(firstfile.h sdir/secondfile.h thirdfile.h) +AC_OUTPUT(Makefile) +END + +: > Makefile.am +mkdir sdir +: > firstfile.h.in +: > sdir/secondfile.h.in +: > thirdfile.h.in + +# Fail gracefully if no autoconf. +$needs_autoconf + +$ACLOCAL || exit 1 +$AUTOCONF || exit 1 +$AUTOMAKE || exit 1 +./configure || exit 1 + +(test -f stamp-h1 && test -f sdir/stamp-h2 && test -f stamp-h3) || exit 1 +exit 0