Sun Nov 24 00:33:50 1996 Tom Tromey <tromey@cygnus.com>
+ * automake.in (handle_source_transform): Don't define
+ EXTRA_prog_SOURCES unnecessarily. Test extra2.test.
+
+ * automake.in (initialize_per_input): New variables
+ included_generic_compile, included_knr_compile,
+ included_libtool_compile.
+ (get_object_extension): Use them.
+
+ * automake.in (handle_single_transform_list): Removed
+ Objective-C/C++ support (didn't really work anyway).
+ (handle_single_transform_list): Handle assembly specially.
+
+ * automake.in (handle_yacc_lex_cxx): Set --mode=compile or
+ --mode=link when running libtool.
+
+ * ltlibs.am: Set --mode=install when running libtool.
+ (uninstall-@DIR@PROGRAMS): Set --mode=uninstall when running
+ libtool.
+ * libtool.am (.c.lo): Set --mode=compile when running libtool.
+ * progs.am: Set --mode=install when running libtool.
+
Fix for bug reported by François Pinard:
* automake.in (do_check_merge_target): New sub.
(do_one_merge_target): No longer handle `check'.
A few notes on this particular release:
+* automake now requires a very recent version of autoconf.
+
+* Fortran support will be in the next release
+
+A few things that I still haven't gotten to fixing:
+
* The `missing' program is still not in use.
* The `acinstall' program is distributed but not used; I still must
* Scan multiple input files when Makefile is generated?
This would provide flexibility for large projects; subsumes
the "Makefile.tmpl" idea
- Figuring out when to update the sub-parts is hard, maybe
+
+ [ can't do this. must explain why in manual.
+ basically, solving all the problems is too hard
+ like: how to remove redundancies between generated .in files
+ instead should implement `include' directive for Makefile.am ]
+
* figure out what to pass as CONFIG_HEADER to config.status
* look @ jim's $(t:=foo) problem
* should install-foo target for a new dir (eg fooexecdir) be run via
install-data or install-exec? Consider examining name of variable.
+* no mention of $(LIBTOOL) in "clean" Makefile (?)
+
+* compatibility with older versions of autoconf if not --gnu
+
================================================================
* only remove libtool at top level?
{
local ($out) = @_;
+ # Always set this.
+ $dir_holds_sources = 1;
+
# Maybe require libtool library object files.
- local ($l) = '';
+ local ($l, $extension) = ('', 'o');
$l = 'l' if ($out =~ /^lib.*\.la$/);
- if (! $dir_holds_sources)
+ if (! $included_generic_compile)
{
# Boilerplate.
local ($xform) = '';
}
}
- # Check for automatic de-ANSI-fication.
- $dir_holds_sources = 'o';
push (@suffixes, '.c', '.o');
push (@clean, 'compile');
- if ($seen_libtool)
- {
- # Output the libtool compilation rules.
- $output_rules .= &file_contents ('libtool');
- &push_phony_cleaners ('libtool');
+ $included_generic_compile = 1;
+ }
- push (@suffixes, '.lo');
- push (@clean, 'libtool');
- }
+ if ($seen_libtool && ! $included_libtool_compile)
+ {
+ # Output the libtool compilation rules.
+ $output_rules .= &file_contents ('libtool');
+ &push_phony_cleaners ('libtool');
+
+ push (@suffixes, '.lo');
+ push (@clean, 'libtool');
+
+ $included_libtool_compile = 1;
+ }
- if (defined $options{'ansi2knr'})
+ # Check for automatic de-ANSI-fication.
+ if (defined $options{'ansi2knr'})
+ {
+ $extension = '$o';
+ if (! $included_knr_compile)
{
if (! $am_c_prototypes)
{
$am_c_prototypes = 1;
}
- $dir_holds_sources = '$o';
push (@suffixes, '._c', '._o');
+ push (@suffixes, '._lo') if $seen_libtool;
# Only require ansi2knr files if they should appear in
# this directory.
push (@clean, 'kr');
&push_phony_cleaners ('kr');
- # FIXME - should be able to do libtool objects, too.
+ $included_knr_compile = 1;
}
}
- return '.' . $l . $dir_holds_sources;
+ return '.' . $l . $extension;
}
# Handle yacc and lex.
if ($seen_libtool)
{
&define_configure_variable ("LIBTOOL");
- $libtool = '$(LIBTOOL) ';
+ $libtool = '$(LIBTOOL) --mode=link ';
}
#
$output_rules .= ("$ext.o:\n"
. "\t\$(CXXCOMPILE) -c \$<\n");
$output_rules .= ("$ext.lo:\n"
- . "\t\$(LIBTOOL) $(CXXCOMPILE) -c \$<\n")
+ . "\t\$(LIBTOOL) --mode=compile $(CXXCOMPILE) -c \$<\n")
if ($seen_libtool);
}
{
# FORTRAN support. FIXME: not finished.
}
- elsif (s/\.[clysmM]$/._o/)
+ elsif (s/\.s$/.o/)
+ {
+ # .s is assembly. Just rewrite it. FIXME: not finished.
+ }
+ elsif (s/\.[cly]$/._o/)
{
- # .c is C. .l is lex. .y is yacc. .s is assembly.
- # .M is Objective-C++. .m is Objective-C.
+ # .c is C. .l is lex. .y is yacc.
# Note: first we rewrite (eg) foo.c to foo._o and push
# the file onto the list of objects that require
# required.
$de_ansi_objects{$_} = 1;
s/\._o$/$obj/;
-
- # FIXME: of course, this should only happen for C
- # source. The multi-language support must really be
- # cleaned up more globally.
$seen_c_source = 1;
}
else
push (@objects, $unxformed . $obj);
push (@files, $unxformed . '.c');
}
- else
- {
- &define_variable ("EXTRA_" . $one_file . "_SOURCES", '');
- }
($temp, @result) = &handle_single_transform_list (@files);
$linker = $temp if $linker eq '';
@sources = ();
@objects = ();
- # TRUE if current directory holds any C source files. (Actually
- # holds object extension, but this information is encapsulated in
- # the function get_object_extension).
- $dir_holds_sources = '';
+ # TRUE if current directory holds any C source files.
+ $dir_holds_sources = 0;
+
+ # These variables track inclusion of various compile-related .am
+ # files. $included_generic_compile is TRUE if the basic code has
+ # been included. $included_knr_compile is TRUE if the ansi2knr
+ # code has been included. $included_libtool_compile is TRUE if
+ # libtool support has been included.
+ $included_generic_compile = 0;
+ $included_knr_compile = 0;
+ $included_libtool_compile = 0;
# TRUE if current directory holds any headers.
$dir_holds_headers = 0;
@include version.texi
-@c Yes, this appears in many Texinfo files. He's just a likeable guy.
-@ifinfo
-@set Francois Franc,ois
-@end ifinfo
-@tex
-@set Francois Fran\noexpand\ptexc cois
-@end tex
-
@dircategory GNU admin
@direntry
* automake: (automake). Making Makefile.in's
@ifinfo
This file documents GNU automake @value{VERSION}
-Copyright (C) 1995 Free Software Foundation, Inc.
+Copyright (C) 1995, 96 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@c copyright page
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 96 Free Software Foundation, Inc.
@sp 2
This is the first edition of the GNU Automake documentation,@*
and is consistent with GNU Automake @value{VERSION}.@*
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
## 02111-1307, USA.
.c.lo:
- $(LIBTOOL) $(COMPILE) -c $<
+## Note that we explicitly set the libtool mode. This avoids any lossage
+## if the program doesn't have a name that libtool expects.
+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
mostlyclean-libtool:
-## Don't remove 'core.*' because some distributions have eg "core.c".
rm -f *.lo
clean-libtool:
## It is harmless to unconditionally use $(LIBTOOL) here because it
## will be null in non-libtoolized packages, and even if it is set to
## a real libtool, its behaviour is identical to normal INSTALL_PROGRAM.
- $(LIBTOOL) $(INSTALL_PROGRAM) $$p $(@DIR@dir)/`echo $$p|sed '$(transform)'`; \
+## Note that we explicitly set the libtool mode. This avoids any lossage
+## if the program doesn't have a name that libtool expects.
+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(@DIR@dir)/`echo $$p|sed '$(transform)'`; \
else :; fi; \
done
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
## 02111-1307, USA.
.c.lo:
- $(LIBTOOL) $(COMPILE) -c $<
+## Note that we explicitly set the libtool mode. This avoids any lossage
+## if the program doesn't have a name that libtool expects.
+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
mostlyclean-libtool:
-## Don't remove 'core.*' because some distributions have eg "core.c".
rm -f *.lo
clean-libtool:
## a syntax error in sh.
list="$(@DIR@_PROGRAMS)"; for p in $$list; do \
if test -f $$p; then \
- $(LIBTOOL) $(INSTALL_PROGRAM) $$p $(@DIR@dir)/$$p; \
+## Note that we explicitly set the libtool mode. This avoids any lossage
+## if the program doesn't have a name that libtool expects.
+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(@DIR@dir)/$$p; \
else :; fi; \
done
uninstall-@DIR@PROGRAMS:
list="$(@DIR@_PROGRAMS)"; for p in $$list; do \
- $(LIBTOOL) rm -f $(@DIR@dir)/$$p; \
+ $(LIBTOOL) --mode=uninstall rm -f $(@DIR@dir)/$$p; \
done
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
-[AC_PREREQ([2.11.2])
+[AC_PREREQ([2.12])
AC_CONFIG_HEADER([$1])
dnl When config.status generates a header, we must update the stamp-h file.
dnl This file resides in the same directory as the config header
## It is harmless to unconditionally use $(LIBTOOL) here because it
## will be null in non-libtoolized packages, and even if it is set to
## a real libtool, its behaviour is identical to normal INSTALL_PROGRAM.
- $(LIBTOOL) $(INSTALL_PROGRAM) $$p $(@DIR@dir)/`echo $$p|sed '$(transform)'`; \
+## Note that we explicitly set the libtool mode. This avoids any lossage
+## if the program doesn't have a name that libtool expects.
+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(@DIR@dir)/`echo $$p|sed '$(transform)'`; \
else :; fi; \
done
+Sun Nov 24 14:36:00 1996 Tom Tromey <tromey@cygnus.com>
+
+ * extra2.test: New file.
+
Fri Nov 22 00:10:04 1996 Tom Tromey <tromey@cygnus.com>
* stdlib.test: New file.
--- /dev/null
+#! /bin/sh
+
+# Check to make sure EXTRA_foo_SOURCES not defined unnecessarily.
+
+. $srcdir/defs || exit 1
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+END
+
+$AUTOMAKE || exit 1
+
+grep EXTRA_foo_SOURCES Makefile.in && exit 1
+exit 0
-@set UPDATED 21 November 1996
+@set UPDATED 28 November 1996
@set EDITION 1.1h
@set VERSION 1.1h