automake
[Top][All Lists]
Advanced

[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





reply via email to

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