[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Option ansi2knr mishandles sources in different directories
From: |
Alexandre Duret-Lutz |
Subject: |
Re: Option ansi2knr mishandles sources in different directories |
Date: |
Thu, 21 Nov 2002 00:22:40 +0100 |
User-agent: |
Gnus/5.090008 (Oort Gnus v0.08) Emacs/20.7 (i386-debian-linux-gnu) |
>>> "Andreas" == Andreas Schwab <address@hidden> writes:
Andreas> Alexandre Duret-Lutz <address@hidden> writes:
>>> AFAICT this was fixed in Automake 1.7.1.
>>> (The test case is ansi9.test.)
Andreas> Sorry, that's the version I'm using.
Ah, I see, the difference is that you don't use
`subdir-objects'. The test suite has a case similars to yours,
ansi6.test, but it wasn't exercized with U=''.
I'm checking in the following change on HEAD and branch-1-7.
Maybe you can use `AUTOMAKE_OPTIONS = subdir-objects' as a
workaround, if this is acceptable.
2002-11-21 Alexandre Duret-Lutz <address@hidden>
* automake.in (handle_single_transform_list): Don't strip the
directory from $full_ansi. This reverts my patch of 2002-10-16.
(lang_c_finish): Use the full filename, including the directory,
in the .c -> _.c rule. These two files must reside in the same
directory.
* tests/ansi6.test: Also try to compile without ansi2knr.
Reported by Andreas Schwab
Index: automake.in
===================================================================
RCS file: /cvs/automake/automake/automake.in,v
retrieving revision 1.1392
diff -u -r1.1392 automake.in
--- automake.in 20 Nov 2002 22:03:56 -0000 1.1392
+++ automake.in 20 Nov 2002 23:15:54 -0000
@@ -2453,8 +2453,6 @@
if ($lang->ansi && defined $options{'ansi2knr'})
{
$full_ansi =~ s/$KNOWN_EXTENSIONS_PATTERN$/\$U$&/;
- $full_ansi = basename $full_ansi
- unless defined $options{'subdir-objects'};
}
my $val = ("$full_ansi $obj_sans_ext "
@@ -5610,16 +5608,17 @@
# we can't use $< -- some makes only define $< during a
# suffix rule.
my $ansfile = $de_ansi_files{$base} . $base . '.c';
- $output_rules .= ($base . "_.c: $ansfile \$(ANSI2KNR)\n\t"
+ my $root = $de_ansi_files{$base} . $base;
+ $output_rules .= ($root . "_.c: $ansfile \$(ANSI2KNR)\n\t"
. '$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(AM_CPPFLAGS) $(CPPFLAGS) '
. '`if test -f $(srcdir)/' . $ansfile
. '; then echo $(srcdir)/' . $ansfile
. '; else echo ' . $ansfile . '; fi` '
. "| sed 's/^# \\([0-9]\\)/#line \\1/' "
- . '| $(ANSI2KNR) > ' . $base . "_.c"
+ . '| $(ANSI2KNR) > $@'
# If ansi2knr fails then we shouldn't
# create the _.c file
- . " || rm -f ${base}_.c\n");
+ . " || rm -f ${root}_.c\n");
push (@objects, $base . '_.$(OBJEXT)');
push (@objects, $base . '_.lo')
if variable_defined ('LIBTOOL');
Index: tests/ansi6.test
===================================================================
RCS file: /cvs/automake/automake/tests/ansi6.test,v
retrieving revision 1.3
diff -u -r1.3 ansi6.test
--- tests/ansi6.test 16 Oct 2002 18:53:44 -0000 1.3
+++ tests/ansi6.test 20 Nov 2002 23:15:55 -0000
@@ -74,3 +74,10 @@
./configure ac_cv_prog_cc_stdc=no
$MAKE
+
+# Also run without forcing ansi2knr, so we make sure the
+# rules work with ANSI compilers.
+# Report from Andreas Schwab.
+$MAKE distclean
+./configure
+$MAKE
--
Alexandre Duret-Lutz