* automake.in (&handle_configure): Use the config.status 2.50
authorAkim Demaille <akim@epita.fr>
Fri, 26 Oct 2001 09:56:43 +0000 (09:56 +0000)
committerAkim Demaille <akim@epita.fr>
Fri, 26 Oct 2001 09:56:43 +0000 (09:56 +0000)
invocation syntax for config files and headers.
autoheader needs the name of the file to create, not from what it
must be created, hence CONFIG_HEADER_FULL is $one_name, not
$one_fullname.
* lib/am/configure.am, lib/am/remake-hdr.am: Likewise.
* tests/confsub.test (SUBDIRS): Adjust to the new config.status
invocation.
Strengthen: Use the non-default config.hin source.
Strengthen: Make sure config.h is properly updated when config.hin
is changed.

ChangeLog
automake.in
lib/am/configure.am
lib/am/remake-hdr.am
tests/confsub.test

index ca56a6e..d94df1a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
 2001-10-26  Akim Demaille  <akim@epita.fr>
 
+       * automake.in (&handle_configure): Use the config.status 2.50
+       invocation syntax for config files and headers.
+       autoheader needs the name of the file to create, not from what it
+       must be created, hence CONFIG_HEADER_FULL is $one_name, not
+       $one_fullname.
+       * lib/am/configure.am, lib/am/remake-hdr.am: Likewise.
+       * tests/confsub.test (SUBDIRS): Adjust to the new config.status
+       invocation.
+       Strengthen: Use the non-default config.hin source.
+       Strengthen: Make sure config.h is properly updated when config.hin
+       is changed.
+
+2001-10-26  Akim Demaille  <akim@epita.fr>
+
        * automake.in (&handle_configure): Seeing Automake files in
        @other_input_files is a programming error, not merely something to
        ignore.
index 5b68ef3..58100fd 100755 (executable)
@@ -3782,7 +3782,7 @@ sub handle_configure
                              ('FILES'              => join (' ', @files),
                               'CONFIG_HEADER'      => $cn_sans_dir,
                               'CONFIG_HEADER_IN'   => $ch_sans_dir,
-                              'CONFIG_HEADER_FULL' => $one_fullname,
+                              'CONFIG_HEADER_FULL' => $one_name,
                               'STAMP'            => "$stamp_dir$stamp_name",
                               'SRC_STAMP'        => "$out_dir/$stamp_name"));
 
@@ -3836,30 +3836,26 @@ sub handle_configure
     my @actual_other_files = ();
     foreach my $lfile (@other_input_files)
     {
-        my ($file, $local);
-       my (@inputs, @rewritten_inputs);
-       my ($need_rewritten);
+        my $file;
+       my @inputs;
        if ($lfile =~ /^([^:]*):(.*)$/)
        {
            # This is the ":" syntax of AC_OUTPUT.
            $file = $1;
            @inputs = split (':', $2);
-           $need_rewritten = 1;
        }
        else
        {
            # Normal usage.
            $file = $lfile;
            @inputs = $file . '.in';
-           $need_rewritten = 0;
        }
 
        # Automake files should not be stored in here, but in %MAKE_LIST.
         prog_error ("$lfile in \@other_input_files")
          if -f $file . '.am';
 
-       $local = basename ($file);
-       @rewritten_inputs = rewrite_inputs_into_dependencies (1, @inputs);
+       my $local = basename ($file);
 
        # Make sure the dist directory for each input file is created.
        # We only have to do this at the topmost level though.  This
@@ -3902,16 +3898,15 @@ sub handle_configure
            next;
        }
 
+       my @rewritten_inputs = rewrite_inputs_into_dependencies (1, @inputs);
        $output_rules .= ($local . ': '
                          . '$(top_builddir)/config.status '
-                         . join (' ', @rewritten_inputs) . "\n"
+                         . "@rewritten_inputs\n"
                          . "\t"
-                         . 'cd $(top_builddir) && CONFIG_FILES='
+                         . 'cd $(top_builddir) && '
+                         . '$(SHELL) ./config.status '
                          . ($relative_dir eq '.' ? '' : '$(subdir)/')
-                         . '$@' . ($need_rewritten
-                                   ? (':' . join (':', @inputs))
-                                   : '')
-                         . ' CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status'
+                         . '$@'
                          . "\n");
        push (@actual_other_files, $local);
 
index bd2de24..fe10617 100644 (file)
@@ -28,9 +28,7 @@
 
 ## This rule remakes the Makefile.
 %MAKEFILE%: %MAINTAINER-MODE% %MAKEFILE-IN% %MAKEFILE-DEPS% $(top_builddir)/config.status
-       cd $(top_builddir) && \
-         CONFIG_HEADERS= CONFIG_LINKS= \
-         CONFIG_FILES=%CONFIG-MAKEFILE% $(SHELL) ./config.status
+       cd $(top_builddir) && $(SHELL) ./config.status %CONFIG-MAKEFILE%
 
 
 
index c6d5c33..af75359 100644 (file)
@@ -28,9 +28,8 @@
 ## We used to try to get a real timestamp here.  But the fear is that
 ## that will cause unnecessary cvs conflicts
        @echo timestamp > %STAMP%T 2> /dev/null
-       cd $(top_builddir) \
-         && CONFIG_FILES= CONFIG_HEADERS=%CONFIG_HEADER_FULL% \
-            $(SHELL) ./config.status
+       cd $(top_builddir) && $(SHELL) ./config.status %CONFIG_HEADER_FULL%
+
 ## Creating the timestamp first, and moving it later, helps ensure that
 ## it will be older than the header file, avoiding needless triggering
 ## of the rebuild rule.
index f803277..4796965 100755 (executable)
@@ -1,16 +1,14 @@
 #! /bin/sh
 
 # Test to make sure config.h can be in subdir.
+# Also, make sure config.h is properly rebuilt.
 
 . $srcdir/defs || exit 1
 
 cat > configure.in << 'END'
 AC_INIT
 AM_INIT_AUTOMAKE(nonesuch, nonesuch)
-AM_CONFIG_HEADER(subdir/config.h)
-PACKAGE=nonesuch
-VERSION=nonesuch
-AC_PROG_CC
+AM_CONFIG_HEADER(subdir/config.h:subdir/config.hin)
 AC_OUTPUT(Makefile subdir/Makefile)
 END
 
@@ -20,14 +18,27 @@ END
 
 mkdir subdir
 cat > subdir/Makefile.am << 'END'
-bin_PROGRAMS = fred
 END
 
-: > subdir/config.h.in
+echo 'Before.' > subdir/config.hin
 
 $ACLOCAL || exit 1
 $AUTOMAKE || exit 1
 
 # Make sure subdir Makefile.in doesn't itself look in the subdir.
-(grep 'subdir/config.h' subdir/Makefile.in | grep -v CONFIG_HEADERS) && exit 1
+# One line is allowed though:
+#
+# cd $(top_builddir) && $(SHELL) ./config.status subdir/config.h
+(fgrep 'subdir/config.h' subdir/Makefile.in |
+   fgrep -v 'cd $(top_builddir)') && exit 1
+
+autoconf || exit 1
+./configure || exit 1
+fgrep 'Before.' subdir/config.h
+
+sleep 1
+echo 'After.' > subdir/config.hin
+make || exit 1
+fgrep 'After.' subdir/config.h || exit 1
+
 exit 0