autoconf-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU Autoconf source repository branch, master, updated. v2.69-181-


From: Eric Blake
Subject: [SCM] GNU Autoconf source repository branch, master, updated. v2.69-181-g78ad1b0
Date: Wed, 21 Dec 2016 16:47:21 +0000 (UTC)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Autoconf source repository".

http://git.sv.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=78ad1b0b2cea606bf401ed0262540b503db73e1c

The branch, master has been updated
       via  78ad1b0b2cea606bf401ed0262540b503db73e1c (commit)
      from  0e2eecedb12dd472c9a008748be6edd6ea68fa0e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 78ad1b0b2cea606bf401ed0262540b503db73e1c
Author: Daniel Elstner <address@hidden>
Date:   Wed Dec 21 17:15:46 2016 +0100

    autoheader: check templates of all config headers
    
    * bin/autoheader.in: When checking for missing templates, take
    all config headers into account, not just the one generated by
    autoheader.  This makes it possible to use AC_DEFINE() for
    secondary headers without duplicating the template into the
    first header.
    * tests/tools.at: Add a check for autoheader with multiple
    config headers.
    * NEWS: Document the new behavior.
    Message-Id: <address@hidden>
    Signed-off-by: Eric Blake <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 NEWS              |    5 +++++
 bin/autoheader.in |   37 ++++++++++++++++++++++++++-----------
 tests/tools.at    |   25 +++++++++++++++++++++++++
 3 files changed, 56 insertions(+), 11 deletions(-)

diff --git a/NEWS b/NEWS
index b82c1e3..a1f741f 100644
--- a/NEWS
+++ b/NEWS
@@ -27,6 +27,11 @@ GNU Autoconf NEWS - User visible changes.
    is now deprecated.  If you really need that behavior use
    AC_PREPROC_IFELSE.
 
+** When checking for missing templates, autoheader now takes any
+   templates defined in the inputs of secondary config headers into
+   account.  This makes it possible to use AC_DEFINE for secondary
+   headers without duplicating the template in the main config header.
+
 ** Macros
 
 - New macro AC_C__GENERIC.
diff --git a/bin/autoheader.in b/bin/autoheader.in
index 528e22c..2d2f943 100644
--- a/bin/autoheader.in
+++ b/bin/autoheader.in
@@ -191,11 +191,21 @@ unless ($config_h)
     exit 1;
   }
 
-# We template only the first CONFIG_HEADER.
-$config_h =~ s/ .*//;
 # Support "outfile[:infile]", defaulting infile="outfile.in".
-($config_h, $config_h_in) = split (':', $config_h, 2);
-$config_h_in ||= "$config_h.in";
+sub templates_for_header
+{
+  my ($spec) = @_;
+  my ($header, @templates) = split(':', $spec);
+
+  return @templates if @templates;
+  return $header . '.in';
+}
+
+my @config_templates = map(templates_for_header($_), split(' ', $config_h));
+
+# We template only the first CONFIG_HEADER.
+$config_h_in = shift(@config_templates);
+$config_h =~ s/[ :].*//;
 
 # %SYMBOL might contain things like 'F77_FUNC(name,NAME)', but we keep
 # only the name of the macro.
@@ -261,14 +271,20 @@ $out->close;
 
 # Check that all the symbols have a template.
 {
-  my $in = new Autom4te::XFile ("$tmp/config.hin", "<");
-  my $suggest_ac_define = 1;
-  while ($_ = $in->getline)
+  foreach my $template ("$tmp/config.hin", @config_templates)
     {
-      my ($symbol) = /^\#\s*\w+\s+(\w+)/
-       or next;
-      delete $symbol{$symbol};
+      my $in = new Autom4te::XFile ($template, "<");
+
+      while ($_ = $in->getline)
+       {
+         my ($sym) = /^\#\s*\w+\s+(\w+)/
+           or next;
+         delete $symbol{$sym};
+       }
     }
+
+  my $suggest_ac_define = 1;
+
   foreach (sort keys %symbol)
     {
       msg 'syntax', "warning: missing template: $_";
@@ -277,7 +293,6 @@ $out->close;
          msg 'syntax',  "Use AC_DEFINE([$_], [], [Description])";
          $suggest_ac_define = 0;
        }
-
     }
   exit 1
     if keys %symbol;
diff --git a/tests/tools.at b/tests/tools.at
index 4993b3f..2592a20 100644
--- a/tests/tools.at
+++ b/tests/tools.at
@@ -860,6 +860,31 @@ config.h.in:0
 AT_CLEANUP
 
 
+# autoheader should take all config header inputs into account when
+# checking for missing templates.
+AT_SETUP([autoheader with multiple headers])
+
+AT_DATA([config-extra.h.in],
+[[/* Define this to whatever you want. */
+#undef HANNA
+]])
+AT_DATA([configure.ac],
+[[AC_INIT
+AC_CONFIG_HEADERS([config.h config-extra.h])
+AC_DEFINE([HANNA], ["Hanna"])
+AC_DEFINE([SEAN], ["Sean"], [Sean's name])
+AC_OUTPUT
+]])
+
+AT_CHECK_AUTOCONF
+AT_CHECK_AUTOHEADER
+AT_CHECK([grep HANNA configure], [0], [ignore], [ignore])
+AT_CHECK([grep HANNA config.h.in], [1], [ignore], [ignore])
+AT_CHECK([grep SEAN configure], [0], [ignore], [ignore])
+AT_CHECK([grep SEAN config.h.in], [0], [ignore], [ignore])
+
+AT_CLEANUP
+
 
 
 ## ------------ ##


hooks/post-receive
-- 
GNU Autoconf source repository



reply via email to

[Prev in Thread] Current Thread [Next in Thread]