stamp-h? files in subdirs are still being created in the wrong locations by an automake configure script. The problem was in AM_CONFIG_HEADERS. I fixed it, but is dependent on the autoconf beta. Patch attached. I was thinking of attempting to eliminate the need for the recreation of stamp-h? files in the Makefile.in targets, but it looked like a hassle to get the quotes right in an m4 macro. If there's interest in this, let me know and I'll spend some more time on it. * m4/header.m4 (AM_CONFIG_HEADERS): fix stamp-h creation to occur in the correct locations (_AM_DIRNAME): helper function which basically implements an sh `dirname` in m4 * automake.in (scan_one_autoconf_file): change the warning exception for AC_CONFIG_HEADERS to match the new m4/header.m4 * stamph2.test: new * dirname.test: new Derek -- Derek Price CVS Solutions Architect ( http://CVSHome.org ) mailto:[EMAIL PROTECTED] OpenAvenue ( http://OpenAvenue.com ) -- The cafeteria deep fryer is not a toy. The cafeteria deep fryer is not a toy. The cafeteria deep fryer is not a toy... - Bart Simpson on chalkboard, _The Simpsons_
? automake-1.4c-stamph.diff ? m4/acheader.m4.sav ? tests/stamph2.test ? tests/dirname.test Index: ChangeLog =================================================================== RCS file: /cvs/automake/ChangeLog,v retrieving revision 1.963 diff -u -r1.963 ChangeLog --- ChangeLog 2001/01/31 04:05:43 1.963 +++ ChangeLog 2001/01/31 19:10:27 @@ -1,3 +1,12 @@ +2001-01-31 Derek Price <[EMAIL PROTECTED]> + + * m4/header.m4 (AM_CONFIG_HEADERS): fix stamp-h creation to occur in + the correct locations + (_AM_DIRNAME): helper function which basically implements an sh + `dirname` in m4 + * automake.in (scan_one_autoconf_file): change the warning exception + for AC_CONFIG_HEADERS to match the new m4/header.m4 + 2001-01-30 Tom Tromey <[EMAIL PROTECTED]> * automake.in (scan_one_autoconf_file): Don't mention Index: automake.in =================================================================== RCS file: /cvs/automake/automake.in,v retrieving revision 1.839 diff -u -r1.839 automake.in --- automake.in 2001/01/31 04:00:45 1.839 +++ automake.in 2001/01/31 19:10:31 @@ -4576,7 +4576,7 @@ # means we are actually scanning AM_CONFIG_HEADER from # aclocal.m4. if (/A([CM])_CONFIG_HEADERS?\s*\((.*)\)/ - && $2 ne '[$1]') + && $2 !~ /^_AM_File,/) { &am_conf_line_error ($filename, $., "\`automake requires \`AM_CONFIG_HEADER', not \`AC_CONFIG_HEADER'") Index: m4/header.m4 =================================================================== RCS file: /cvs/automake/m4/header.m4,v retrieving revision 1.7 diff -u -r1.7 header.m4 --- m4/header.m4 2000/08/06 12:36:53 1.7 +++ m4/header.m4 2001/01/31 19:10:31 @@ -1,3 +1,5 @@ +# AM_CONFIG_HEADER(HEADERS..., [COMMANDS], [INIT-CMDS]) +# ----------------------------------------------------- # Like AC_CONFIG_HEADER, but automatically create stamp file. # serial 3 @@ -7,22 +9,33 @@ # that is generated. We must strip everything past the first ":", # and everything past the last "/". -AC_PREREQ([2.12]) +AC_PREREQ([2.49c]) AC_DEFUN([AM_CONFIG_HEADER], -[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]) -]) + [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])]) +]) # 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]))]) Index: tests/ChangeLog =================================================================== RCS file: /cvs/automake/tests/ChangeLog,v retrieving revision 1.326 diff -u -r1.326 ChangeLog --- tests/ChangeLog 2001/01/29 09:41:43 1.326 +++ tests/ChangeLog 2001/01/31 19:10:31 @@ -1,3 +1,8 @@ +2001-01-31 Derek Price <[EMAIL PROTECTED]> + + * stamph2.test: new + * dirname.test: new + 2001-01-29 Akim Demaille <[EMAIL PROTECTED]> * check.test: New. Index: tests/Makefile.am =================================================================== RCS file: /cvs/automake/tests/Makefile.am,v retrieving revision 1.247 diff -u -r1.247 Makefile.am --- tests/Makefile.am 2001/01/29 09:41:43 1.247 +++ tests/Makefile.am 2001/01/31 19:10:31 @@ -88,6 +88,7 @@ depacl2.test \ depend.test \ depend3.test \ +dirname.test \ discover.test \ distdir.test \ double.test \ @@ -226,6 +227,7 @@ spell3.test \ spelling.test \ stamph.test \ +stamph2.test \ stdlib.test \ subdir.test \ subdir2.test \ Index: tests/Makefile.in =================================================================== RCS file: /cvs/automake/tests/Makefile.in,v retrieving revision 1.311 diff -u -r1.311 Makefile.in --- tests/Makefile.in 2001/01/29 09:41:43 1.311 +++ tests/Makefile.in 2001/01/31 19:10:32 @@ -157,6 +157,7 @@ depacl2.test \ depend.test \ depend3.test \ +dirname.test \ discover.test \ distdir.test \ double.test \ @@ -295,6 +296,7 @@ spell3.test \ spelling.test \ stamph.test \ +stamph2.test \ stdlib.test \ subdir.test \ subdir2.test \ --- /dev/null Thu Aug 24 05:00:32 2000 +++ tests/dirname.test Wed Jan 31 13:56:55 2001 @@ -0,0 +1,41 @@ +#! /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. +(autoconf --version) > /dev/null 2>&1 || exit 77 + +# Fail gracefully if no GNU diff +(diff --version) > /dev/null 2>&1 || exit 77 + +$ACLOCAL || exit 1 +autoconf || exit 1 +./configure >got || exit 1 + +cat >wanted <<EOF +1 /a/path/to/a/file = /a/path/to/a +2 another/path/to/a/file = another/path/to/a +3 file = . +4 // = // +5 //file = // +6 / = / +7 /file = / +EOF + +diff got wanted || exit 1 + +exit 0 + --- /dev/null Thu Aug 24 05:00:32 2000 +++ tests/stamph2.test Wed Jan 31 13:31:57 2001 @@ -0,0 +1,29 @@ +#! /bin/sh + +# Make sure stamp-h* files are created where we expect + +. $srcdir/defs || exit 1 + +cat > 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. +(autoconf --version) > /dev/null 2>&1 || exit 77 + +$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