* depend2.am: Removed erroneous comment.
authorTom Tromey <tromey@redhat.com>
Tue, 14 Dec 1999 04:10:36 +0000 (04:10 +0000)
committerTom Tromey <tromey@redhat.com>
Tue, 14 Dec 1999 04:10:36 +0000 (04:10 +0000)
* automake.texi (Program variables): Document nostdinc.
(Options): Likewise.
* automake.in (get_object_extension): Respect nostdinc option.
(handle_options): Recognize nostdinc.
* comp-vars.am (DEFS): Use @DEFAULT_INCLUDES@ as sole
substitution.

* automake.in (read_am_file): Allow conditional includes.  Fixes
test condincl.test.

ChangeLog
TODO
automake.in
automake.texi
comp-vars.am
depend2.am
lib/am/comp-vars.am
lib/am/depend2.am
stamp-vti
version.texi

index 14b5e71..6b2ac0c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 1999-12-13  Tom Tromey  <tromey@cygnus.com>
 
+       * depend2.am: Removed erroneous comment.
+
+       * automake.texi (Program variables): Document nostdinc.
+       (Options): Likewise.
+       * automake.in (get_object_extension): Respect nostdinc option.
+       (handle_options): Recognize nostdinc.
+       * comp-vars.am (DEFS): Use @DEFAULT_INCLUDES@ as sole
+       substitution.
+
+       * automake.in (read_am_file): Allow conditional includes.  Fixes
+       test condincl.test.
+
        * depcomp: Handle case on SGI when libtool is `yes'.
        * depend2.am (@EXT@.o): Set libtool.
        (@EXT@.lo): Likewise.
diff --git a/TODO b/TODO
index dd748d7..6ea6757 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,14 +1,39 @@
+* in depend2.am, in specialization case, what if @SOURCE@ is found
+  in srcdir?  We can't depend on $<!  We must search explicitly.
+  this is a very serious problem!
+  one solution would be to make built-source handling smarter and
+  a bit more strict.  For instance require that built sources
+  have an associated target.  In this case we must also handle suffix
+  rules and the like.
+
 * Document why putting @FOO@ in _SOURCES doesn't work.
   This must be done for 1.5
 
+* ylwrap should support flex's -P option
+  also it should be integrated into missing, probably
+
+* think about how per-object flags should work.  in particular:
+  * how should they be specified?
+    using the object name is confusing when .lo/.obj in use
+    however, the object name provides a nice interaction with
+    per-exe flags
+  * how should they interact with per-executable flags?
+
+* cross-compilation support:
+  programs built and used by the build process need to be
+  built for CC_FOR_BUILD
+  introduce a new variable for this
+  [ we can do this in an automatic way I think.
+    unfortunately it isn't that useful until autoconf has support
+    for this sort of thing as well ]
+
 * if automake -a, and dangling links exist, automake should
   remove and reinstall
 
 * add a way to require C++ support even when no apparent C++ code
   exists.  Likewise for other langs.
-
-* in depend2.am, in specialization case, what if @SOURCE@ is found
-  in srcdir?  We can't depend on $<!  We must search explicitly.
+  eg, `extension-cxx' option
+  (is this really needed?)
 
 * Add a way to say that foo/bar.h should be installed as
   $(includedir)/foo/bar.h without introducing a new dir var
 
 * support prog_LIBS as override for LIBS
 
-* serious bug.  this doesn't work:
-       .c.o: ; ...
-       foo.o: sub/foo.c
-  why did I think it did work?
-
 * Sometimes we can warn about a missing `compile' script twice.
 
 * A target named `INSTALL' will screw things up.
 * CFLAGS only defined if C source seen
   but really it should be a configure variable, shouldn't it?
   There are other examples of this
+  [ moving to autoconf --trace ought to fix this ]
 
 * in gnu/gnits mode, give error if Makefile.am overrides a user
   variable like CFLAGS.
+  [ this is low priority because the package author can always
+    circumvent our check by redefining in configure.in
+    plus it is probably better to encourage good behavior than to
+    punish bad ]
 
 * If we see `foo.o' in LIBOBJS, and we've seen AC_OBJEXT, then complain.
-
-* using "include" inside a conditional doesn't currently
-  work properly.
+  [ how will we know that?  it is better to handle this automatically
+    via an autoconf hook ]
 
 * examine possibility of using any character in a macro name
   and rewriting names automatically.  this means we must rewrite
   all references as well.
+  [ this is a 2.0-style feature ]
 
 * AM_CONFIG_HEADER might generate the wrong stamp file names
   when given multiple headers.  Write a test.
 * There are probably more bugs in variable_conditions_sub along
   the lines of the one that caused cond4.test to fail.
 
-* give user more control over -I flags
-  in particular document a way to override the defaults
-
 * reintroduce AM_FUNC_FNMATCH which sets LIBOBJS
   Then have automake know about fnmatch.h.
     [ probably should wait for autoconf to get right functionality ]
 
-* Add a conditional for dependency tracking
-  (what to name it is the biggest problem here)
-  (because we want it to flag dist/no-dist -- not just deps)
-    [ this might not really be correctly doable.
-      instead we need a compile-time conditional for this
-      yuck ]
-
 * Allow per-object cflags:
        bin_PROGRAMS = foo
        foo_CFLAGS = -DFOO
@@ -179,11 +194,6 @@ DONE: but needs to be documented
   look at gcc's Makefile.in to see what to do
   or look at maint program
 
-* Karl wants to be able to set LIBS and LDFLAGS at build time, like CFLAGS
-  maybe we need something more general?
-
-* add $(srcdir)/ before some dependencies?
-
 * define LINK if a program is mentioned, even if no C sources appear
 
 * BUILT_SOURCES should not be distributed, even when they appear in
@@ -197,12 +207,11 @@ DONE: but needs to be documented
        $(FOO).$(BAR)  ?
   or some other arbitrary thing?
   right now we try to cope, but not very well
-
-* if `interlock' exists, that should be an error (?)
-  should also warn about using new ylwrap and not old one
-  only do this when looking for ylwrap
+    [ this is only of theoretical interest for now ]
 
 ** make sure every variable that is used is also defined
+    [ we don't really look at variable uses in detail.
+      2.0 thing ]
 
 * make sure `missing' defines are generated
 * if no AM_INIT_AUTOMAKE, then don't handle `missing' stuff.
@@ -218,11 +227,6 @@ DONE: but needs to be documented
 * NORMAL_INSTALL / NORMAL_UNINSTALL -vs- recursive rules
   [ requires changes to the standard ]
 
-* cross-compilation support:
-  programs built and used by the build process need to be
-  built for CC_FOR_BUILD
-  introduce a new variable for this
-
 * if foo.y is a source, foo.h isn't auto-distributed?
 
 * copyrights on m4 files, aclocal output
@@ -230,9 +234,6 @@ DONE: but needs to be documented
 * is there a way to add a directory and then have "make" do all the
   updating?  think.
 
-* put standards.texi into distribution
-
-
 * should not put texiname_TEXINFOS into distribution
   should rename this macro anyway, to foo_texi_DEPENDENCIES
 
index f59f98b..1244cbf 100755 (executable)
@@ -716,7 +716,7 @@ sub handle_options
                   || $_ eq 'dist-tarZ' || $_ eq 'dist-bzip2'
                   || $_ eq 'dejagnu' || $_ eq 'no-texinfo.tex'
                   || $_ eq 'readme-alpha' || $_ eq 'check-news'
-                  || $_ eq 'subdir-objects')
+                  || $_ eq 'subdir-objects' || $_ eq 'nostdinc')
            {
                # Explicitly recognize these.
            }
@@ -783,18 +783,23 @@ sub get_object_extension
     {
        # Boilerplate.
        local ($xform) = '';
-       if (&variable_defined ('CONFIG_HEADER'))
+       if (! defined $options{'nostdinc'})
        {
-           local ($one_hdr);
-           foreach $one_hdr (split (' ', &variable_value ('CONFIG_HEADER')))
+           $xform = "-I. -I\$(srcdir)";
+
+           if (&variable_defined ('CONFIG_HEADER'))
            {
-               local ($var);
-               ($var = &dirname ($one_hdr)) =~ s/(\W)/\\$1/g;
-               $xform .= ' ' if $xform;
-               $xform .= '-I' . $var;
+               local ($one_hdr);
+               foreach $one_hdr (split (' ',
+                                        &variable_value ('CONFIG_HEADER')))
+               {
+                   local ($var);
+                   ($var = &dirname ($one_hdr)) =~ s/(\W)/\\$1/g;
+                   $xform .= ' -I' . $var;
+               }
            }
        }
-       $xform = 's/\@CONFIG_INCLUDE_SPEC\@/' . $xform . '/go;';
+       $xform = 's/\@DEFAULT_INCLUDES\@/' . $xform . '/go;';
        $output_vars .= &file_contents_with_transform ($xform,
                                                       'comp-vars');
 
@@ -3598,7 +3603,6 @@ sub handle_footer
     $output_header .= ".SUFFIXES:\n";
     if (@suffixes)
     {
-
        # Make sure suffixes has unique elements.  Sort them to ensure
        # the output remains consistent.
        local (%suffixes);
@@ -6044,6 +6048,11 @@ sub read_am_file
     local ($last_var_name) = '';
     local ($blank) = 0;
 
+    # We save the conditional stack on entry, and then check to make
+    # sure it is the same on exit.  This lets us conditonally include
+    # other files.
+    local (@saved_cond_stack) = @conditional_stack;
+
     while (<AM_FILE>)
     {
        if (/$IGNORE_PATTERN/o)
@@ -6371,8 +6380,18 @@ sub read_am_file
 
     $output_trailer .= $comment;
 
-    &am_error ("unterminated conditionals: " . join (' ', @conditional_stack))
-       if (@conditional_stack);
+    if (join (' ', @saved_cond_stack) ne join (' ', @conditional_stack))
+    {
+       if (@conditional_stack)
+       {
+           &am_error ("unterminated conditionals: " . join (' ', @conditional_stack));
+       }
+       else
+       {
+           # FIXME: better error message here.
+           &am_error ("conditionals not nested in include file");
+       }
+    }
 }
 
 # A helper for read_main_am_file which initializes configure variables
index a3ddd12..708b189 100644 (file)
@@ -1802,9 +1802,10 @@ There are some additional variables which Automake itself defines:
 A list of @samp{-I} options.  This can be set in your @file{Makefile.am}
 if you have special directories you want to look in.  Automake already
 provides some @samp{-I} options automatically.  In particular it
-generates @samp{-I$(srcdir)} and a @samp{-I} pointing to the directory
-holding @file{config.h} (if you've used @code{AC_CONFIG_HEADER} or
-@code{AM_CONFIG_HEADER}).
+generates @samp{-I$(srcdir)}, @samp{-I.}, and a @samp{-I} pointing to
+the directory holding @file{config.h} (if you've used
+@code{AC_CONFIG_HEADER} or @code{AM_CONFIG_HEADER}).  You can disable
+the default @samp{-I} options using the @samp{nostdinc} option.
 
 @code{INCLUDES} can actually be used for other @code{cpp} options
 besides @samp{-I}.  For instance, it is sometimes used to pass arbitrary
@@ -3181,6 +3182,11 @@ be available for optional installation.  This option is disallowed at
 @samp{GNU} strictness and above.
 @trindex install-man
 
+@item @code{nostdinc}
+@cindex Option, nostdinc
+This option can be used to disable the standard @samp{-I} options which
+are ordinarily automatically provided by Automake.
+
 @item @code{no-texinfo.tex}
 @cindex Option, no-texinfo
 Don't require @file{texinfo.tex}, even if there are texinfo files in
index c7d773b..e38d326 100644 (file)
@@ -1,5 +1,5 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
+## Copyright (C) 1994, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 ## 02111-1307, USA.
 
-DEFS = @DEFS@ -I. -I$(srcdir) @CONFIG_INCLUDE_SPEC@
+DEFS = @DEFS@@DEFAULT_INCLUDES@
 CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
index 97a8b45..f73ddb5 100644 (file)
 ## along with this program; if not, write to the Free Software
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 ## 02111-1307, USA.
-## Note that this must all be on one line to avoid a problem with
-## automake's `.am' file reader.  This is a convenience macro a user
-## can use to run a compilation.  You should set the shell variables
-## `file' and `compile' first.
 @AMDEP@@FPFX@DEPMODE = @@FPFX@DEPMODE@
 
 @EXT@.o:
index c7d773b..e38d326 100644 (file)
@@ -1,5 +1,5 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
+## Copyright (C) 1994, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 ## 02111-1307, USA.
 
-DEFS = @DEFS@ -I. -I$(srcdir) @CONFIG_INCLUDE_SPEC@
+DEFS = @DEFS@@DEFAULT_INCLUDES@
 CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
index 97a8b45..f73ddb5 100644 (file)
 ## along with this program; if not, write to the Free Software
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 ## 02111-1307, USA.
-## Note that this must all be on one line to avoid a problem with
-## automake's `.am' file reader.  This is a convenience macro a user
-## can use to run a compilation.  You should set the shell variables
-## `file' and `compile' first.
 @AMDEP@@FPFX@DEPMODE = @@FPFX@DEPMODE@
 
 @EXT@.o:
index 950da01..98eea97 100644 (file)
--- a/stamp-vti
+++ b/stamp-vti
@@ -1,3 +1,3 @@
-@set UPDATED 21 November 1999
+@set UPDATED 13 December 1999
 @set EDITION 1.4a
 @set VERSION 1.4a
index 950da01..98eea97 100644 (file)
@@ -1,3 +1,3 @@
-@set UPDATED 21 November 1999
+@set UPDATED 13 December 1999
 @set EDITION 1.4a
 @set VERSION 1.4a