From dd8b2944b9217841c2c232c3f2794c3f6296e3a2 Mon Sep 17 00:00:00 2001 From: Florian Briegel Date: Tue, 7 Apr 2009 23:16:01 +0200 Subject: [PATCH] Fix renamed objects with subdir-objects and other languages. * automake.in: Fixed bug when building with renamed objects and foreign languages. * tests/suffix13.test: New test. * tests/Makefile.am: Adjust. * THANKS: Update. Reports by Florian Briegel and Stepan Kasal. Signed-off-by: Ralf Wildenhues --- ChangeLog | 12 +++++++++ THANKS | 1 + automake.in | 11 +++++++- tests/Makefile.am | 1 + tests/Makefile.in | 1 + tests/suffix13.test | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 100 insertions(+), 1 deletion(-) create mode 100755 tests/suffix13.test diff --git a/ChangeLog b/ChangeLog index e574108..d5e8ba3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-04-07 Florian Briegel (tiny change) + Stepan Kasal + Ralf Wildenhues + + Fix renamed objects with subdir-objects and other languages. + * automake.in: Fixed bug when building with renamed objects + and foreign languages. + * tests/suffix13.test: New test. + * tests/Makefile.am: Adjust. + * THANKS: Update. + Reports by Florian Briegel and Stepan Kasal. + 2009-04-07 Ralf Wildenhues Do not remove texinfo outputs upon mostlyclean. diff --git a/THANKS b/THANKS index 9f91c9c..fda6f74 100644 --- a/THANKS +++ b/THANKS @@ -97,6 +97,7 @@ Erik Lindahl E.Lindahl@chem.rug.nl Esben Haabendal Soerensen bart@kom.aau.dk Ezra Peisach epeisach@MED-XTAL.BU.EDU Flavien Astraud flav42@yahoo.fr +Florian Briegel briegel@zone42.de Francesco Salvestrini salvestrini@gmail.com François Pinard pinard@iro.umontreal.ca Fred Fish fnf@ninemoons.com diff --git a/automake.in b/automake.in index 1be3e18..2577ffb 100755 --- a/automake.in +++ b/automake.in @@ -1919,7 +1919,16 @@ sub handle_single_transform ($$$$$%) { my $obj_sans_ext = substr ($object, 0, - length ($this_obj_ext)); - my $full_ansi = $full; + my $full_ansi; + if ($directory ne '') + { + $full_ansi = $directory . '/' . $base . $extension; + } + else + { + $full_ansi = $base . $extension; + } + if ($lang->ansi && option 'ansi2knr') { $full_ansi =~ s/$KNOWN_EXTENSIONS_PATTERN$/\$U$&/; diff --git a/tests/Makefile.am b/tests/Makefile.am index b0bb273..d90eb6c 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -645,6 +645,7 @@ suffix9.test \ suffix10.test \ suffix11.test \ suffix12.test \ +suffix13.test \ symlink.test \ symlink2.test \ symlink3.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index e3c9206..e2fdace 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -877,6 +877,7 @@ suffix9.test \ suffix10.test \ suffix11.test \ suffix12.test \ +suffix13.test \ symlink.test \ symlink2.test \ symlink3.test \ diff --git a/tests/suffix13.test b/tests/suffix13.test new file mode 100755 index 0000000..dda4cfb --- /dev/null +++ b/tests/suffix13.test @@ -0,0 +1,75 @@ +#! /bin/sh +# Copyright (C) 2002, 2003, 2006, 2009 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 Automake; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# Tests that Automake understands suffix rules with renamed objects +# and subdir objects. +# Reported by Florian Briegel. + +. ./defs || exit 1 + +set -e + +cat >>configure.in <Makefile.am << 'END' +AUTOMAKE_OPTIONS = subdir-objects +SUFFIXES = .baz .c +.baz.c: + case $@ in sub/*) $(MKDIR_P) sub;; *) :;; esac + cp $< $@ + +DISTCLEANFILES = sub/bar.c + +bin_PROGRAMS = foo +foo_SOURCES = foo.c sub/bar.baz +foo_CFLAGS = +END + +mkdir sub +cat > sub/bar.baz <<'END' +extern int foo (); +int main () { return foo (); } +END +cat > foo.c <<'END' +int foo () { return 0; } +END + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a +./configure +$MAKE + +$MAKE distcheck +$MAKE distclean + +# Should also work without subdir-objects + +sed '/subdir-objects/d' < Makefile.am > t +mv -f t Makefile.am +$AUTOMAKE --force +./configure +$MAKE +$MAKE distcheck +: -- 2.7.4