[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problems with ansi2knr
From: |
Alexandre Duret-Lutz |
Subject: |
Re: Problems with ansi2knr |
Date: |
Tue, 15 Oct 2002 00:00:39 +0200 |
User-agent: |
Gnus/5.090008 (Oort Gnus v0.08) Emacs/20.7 (i386-debian-linux-gnu) |
>>> "Paul" == Paul D Smith <address@hidden> writes:
[...]
Paul> noinst_PROGRAMS = loadavg
Paul> nodist_loadavg_SOURCES = loadavg.c
Paul> loadavg_CFLAGS = -DTEST
Paul> loadavg_LDADD = @GETLOADAVG_LIBS@
Paul> loadavg.c: $(srcdir)/getloadavg.c
Paul> cp $(srcdir)/getloadavg.c loadavg.c
(Incidentally, why do you copy the file instead of
nodist_loadavg_SOURCES = getloadavg.c
? Automake should rename the object file for you so there is no clashes.)
Paul> This works for normal builds, but fails during builds without ANSI
Paul> compilers.
Seems like Ansi2knr didn't work when per-target flags or subdirectory
sources where used.
The following patch should fix it. Unfortunately I don't have
the time to run the test suite know, so it might as well break
something else :)
2002-10-14 Alexandre Duret-Lutz <address@hidden>
* automake.in (handle_single_transform_list) <full_ansi>: New variable.
Use this to record correct dependencies about deansifiable files which
are using per-program flags or are in a subdirectory.
* tests/ansi9.test: New file.
* tests/Makefile.am (TESTS): Add ansi9.test.
Reported by Paul D. Smith
Index: automake.in
===================================================================
RCS file: /cvs/automake/automake/automake.in,v
retrieving revision 1.1378
diff -u -r1.1378 automake.in
--- automake.in 10 Oct 2002 17:37:37 -0000 1.1378
+++ automake.in 14 Oct 2002 21:52:29 -0000
@@ -2329,6 +2329,7 @@
my $directory = $1 || '';
my $base = $2;
my $extension = $3;
+ my $full_ansi = $full; # We'll insert `$U' if needed.
# We must generate a rule for the object if it requires its own flags.
my $renamed = 0;
@@ -2448,7 +2449,12 @@
{
my $obj_sans_ext = substr ($object, 0,
- length ($this_obj_ext));
- my $val = ("$full $obj_sans_ext "
+ if ($lang->ansi && defined $options{'ansi2knr'})
+ {
+ $full_ansi =~ s/$KNOWN_EXTENSIONS_PATTERN$/\$U$&/;
+ }
+
+ my $val = ("$full_ansi $obj_sans_ext "
# Only use $this_obj_ext in the derived
# source case because in the other case we
# *don't* want $(OBJEXT) to appear here.
@@ -2545,7 +2551,7 @@
# dependency.
if ($directory ne '' || $renamed)
{
- push (@dep_list, $full);
+ push (@dep_list, $full_ansi);
}
# If resulting object is in subdir, we need to make
Index: tests/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.450
diff -u -r1.450 Makefile.am
--- tests/Makefile.am 12 Oct 2002 21:19:29 -0000 1.450
+++ tests/Makefile.am 14 Oct 2002 21:52:31 -0000
@@ -30,6 +30,7 @@
ansi6.test \
ansi7.test \
ansi8.test \
+ansi9.test \
ar.test \
asm.test \
autoheader.test \
Index: tests/ansi9.test
===================================================================
RCS file: tests/ansi9.test
diff -N tests/ansi9.test
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/ansi9.test 14 Oct 2002 21:52:32 -0000
@@ -0,0 +1,47 @@
+#! /bin/sh
+# Copyright (C) 2002 Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with autoconf; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# Check that subdir sources, and file compiled using per-target flags
+# can still be deansified.
+# Report from Paul D. Smith.
+
+. ./defs || exit 1
+
+set -e
+
+cat >>configure.in <<EOF
+AC_PROG_CC
+AM_PROG_CC_C_O
+AM_C_PROTOTYPES
+EOF
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = ansi2knr subdir-objects
+noinst_PROGRAMS = loadavg sub/sub
+loadavg_SOURCES = loadavg.c
+loadavg_CFLAGS = -DTEST
+sub_sub_SOURCES = sub/sub.c
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+$FGREP 'loadavg-loadavg$U.o: loadavg$U.c' Makefile.in
+$FGREP 'sub/sub$U.o: sub/sub$U.c' Makefile.in
--
Alexandre Duret-Lutz
- Re: Problems with ansi2knr,
Alexandre Duret-Lutz <=