From: Stefano Lattarini Date: Mon, 12 Sep 2011 09:03:32 +0000 (+0200) Subject: java: allow both JAVA and nobase_JAVA in the same Makefile.am X-Git-Tag: v1.11.1b~18^2~3^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a937d21bbf695af2749d6ca2cd2def96009ec9a;p=thirdparty%2Fautomake.git java: allow both JAVA and nobase_JAVA in the same Makefile.am * automake.in (handle_java): Also strip `nobase_' from the given prefix, when needed. * tests/java-clean.test: Update and extend. * tests/java-compile-install.test: Likewise. * tests/java-no-duplicate.test: Likewise. * tests/java-sources.test: Likewise. * tests/java-noinst.test: Likewise. * tests/java-mix-dist-nodist.test: Renamed to ... * tests/java-mix.test: ... this, and extended. * tests/java-nobase.test: New test, still xfailing due to unrelated issues. * tests/Makefile.am (TESTS, XFAIL_TESTS): Update. Cherry-picked from v1.11-356-g01dede4 --- diff --git a/ChangeLog b/ChangeLog index 5c135e9c9..1f7a26324 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2011-04-23 Stefano Lattarini + + java: allow both JAVA and nobase_JAVA in the same Makefile.am + * automake.in (handle_java): Also strip `nobase_' from the given + prefix, when needed. + * tests/java-clean.test: Update and extend. + * tests/java-compile-install.test: Likewise. + * tests/java-no-duplicate.test: Likewise. + * tests/java-sources.test: Likewise. + * tests/java-noinst.test: Likewise. + * tests/java-mix-dist-nodist.test: Renamed to ... + * tests/java-mix.test: ... this, and extended. + * tests/java-nobase.test: New test, still xfailing due to + unrelated issues. + * tests/Makefile.am (TESTS, XFAIL_TESTS): Update. + 2011-04-18 Stefano Lattarini java: allow both dist_JAVA and nodist_JAVA in the same Makefile.am diff --git a/automake.in b/automake.in index 9ee515c96..208a66bf9 100755 --- a/automake.in +++ b/automake.in @@ -5114,7 +5114,7 @@ sub handle_java my @java_sources = (); foreach my $prefix (@prefixes) { - (my $curs = $prefix) =~ s/^(?:no)?dist_//; + (my $curs = $prefix) =~ s/^(?:nobase_)?(?:dist_|nodist_)?//; next if $curs eq 'EXTRA'; diff --git a/tests/Makefile.am b/tests/Makefile.am index 7db542781..abbd8301d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -21,6 +21,7 @@ all.test \ auxdir2.test \ cond17.test \ gcj6.test \ +java-nobase.test \ pr8365-remake-timing.test \ yacc-dist-nobuild-subdir.test \ vala-vpath.test \ @@ -455,10 +456,11 @@ java-empty-classpath.test \ javaprim.test \ javasubst.test \ java-clean.test \ +java-nobase.test \ java-compile-install.test \ java-sources.test \ java-no-duplicate.test \ -java-mix-dist-nodist.test \ +java-mix.test \ ldadd.test \ ldflags.test \ lex.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index f77c27541..ffb1764f3 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -286,6 +286,7 @@ all.test \ auxdir2.test \ cond17.test \ gcj6.test \ +java-nobase.test \ pr8365-remake-timing.test \ yacc-dist-nobuild-subdir.test \ vala-vpath.test \ @@ -733,10 +734,11 @@ java-empty-classpath.test \ javaprim.test \ javasubst.test \ java-clean.test \ +java-nobase.test \ java-compile-install.test \ java-sources.test \ java-no-duplicate.test \ -java-mix-dist-nodist.test \ +java-mix.test \ ldadd.test \ ldflags.test \ lex.test \ diff --git a/tests/java-clean.test b/tests/java-clean.test index 4dcc966e2..7db5e5371 100755 --- a/tests/java-clean.test +++ b/tests/java-clean.test @@ -27,14 +27,21 @@ END cat > Makefile.am << 'END' javadir = $(datadir)/java + java_JAVA = Class.java dist_java_JAVA = ClassDist.java -nodist_java_JAVA = ClassNoDist.java +nodist_java_JAVA = ClassNodist.java + +nobase_java_JAVA = ClassNobase.java +nobase_dist_java_JAVA = ClassNobaseDist.java +nobase_nodist_java_JAVA = ClassNobaseNodist.java END -echo 'class Class {}' > Class.java -echo 'class ClassDist {}' > ClassDist.java -echo 'class ClassNoDist {}' > ClassNoDist.java +for base in '' Nobase; do + for dist in '' Dist Nodist; do + echo "class Class$base$dist {}" > Class$base$dist.java + done +done $ACLOCAL $AUTOCONF @@ -44,14 +51,18 @@ $AUTOMAKE $MAKE ls -l test -f classjava.stamp -test -f Class.class -test -f ClassDist.class -test -f ClassNoDist.class +for base in '' Nobase; do + for dist in '' Dist Nodist; do + test -f Class$base$dist.class + done +done $MAKE clean find . -name '*.class' -o -name '*.stamp' | grep . && Exit 1 # We should not remove unrelated stamp files. echo timestamp > classjava2.stamp +echo timestamp > classdist_java.stamp $MAKE clean test -f classjava2.stamp +test -f classdist_java.stamp : diff --git a/tests/java-compile-install.test b/tests/java-compile-install.test index b2145fbb0..74b7a001f 100755 --- a/tests/java-compile-install.test +++ b/tests/java-compile-install.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 1998, 2001, 2002, 2004, 2007 Free Software Foundation, Inc. +# Copyright (C) 2011 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,12 +28,20 @@ EOF cat > Makefile.am << 'END' javadir = $(datadir)/java java_JAVA = Foo.java -dist_java_JAVA = Bar.java +nobase_java_JAVA = Foo2.java +nobase_dist_java_JAVA = Bar.java nodist_java_JAVA = Baz.java -# Java files are not distributed by default. +# Java files are not distributed by default, so we distribute +# one "by hand" ... EXTRA_DIST = Foo.java +# ... and make the other one generated. +Foo2.java: + rm -f $@ $@-t + echo 'class bClass {}' > $@-t + chmod a-w $@-t && mv -f $@-t $@ +# Explicitly declared as `nodist_', so generate it. Baz.java: rm -f $@ $@-t echo 'class Baz {}' > $@-t @@ -44,29 +52,34 @@ test: ls -l $(srcdir) . ;: For debugging. test -f $(srcdir)/Foo.java test -f $(srcdir)/Bar.java + test -f Foo2.java test -f Baz.java test -f aClass.class + test -f bClass.class test -f Zardoz.class test -f Baz.class test -f Baz2.class test ! -r Foo.class test ! -r Bar.class + test -f classjava.stamp test-install: - find $(prefix) ;: For debugging. + ls -l $(javadir) ;: For debugging. + test -f '$(javadir)/bClass.class' test -f '$(javadir)/aClass.class' test -f '$(javadir)/Zardoz.class' test -f '$(javadir)/Baz.class' test -f '$(javadir)/Baz2.class' test ! -r '$(javadir)/Foo.class' test ! -r '$(javadir)/Bar.class' + if find $(prefix) | grep '\.stamp$$'; then exit 1; else :; fi check-local: test installcheck-local: test-install .PHONY: test test-install -DISTCLEANFILES = Baz.java +DISTCLEANFILES = Baz.java Foo2.java END echo 'class aClass {}' > Foo.java diff --git a/tests/java-mix-dist-nodist.test b/tests/java-mix.test similarity index 63% rename from tests/java-mix-dist-nodist.test rename to tests/java-mix.test index 786f40053..1c8163ac1 100755 --- a/tests/java-mix-dist-nodist.test +++ b/tests/java-mix.test @@ -14,8 +14,9 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# Check that the JAVA primary can be used with both `dist_' and `nodist_' -# modifiers in the same directory. +# Check that the JAVA primary can be used freely in the same Makefile.am +# with proper combinations of the `dist_', `nodist_' and `nobase_' +# modifiers . . ./defs || Exit 1 @@ -27,15 +28,23 @@ cat > Makefile.am << 'END' # This test does not require compilation of *.java files. JAVAC = false javadir = $(prefix) -java_JAVA = Class1.java -dist_java_JAVA = Class2.java -nodist_java_JAVA = Class3.java -Class3.java: + +java_JAVA = Class.java +dist_java_JAVA = ClassDist.java +nodist_java_JAVA = ClassNodist.java + +nobase_java_JAVA = ClassNobase.java +nobase_dist_java_JAVA = ClassNobaseDist.java +nobase_nodist_java_JAVA = ClassNobaseNodist.java + +Class3.java Class6.java: @echo '$@ should not be generated!' >&2; exit 1 END -: > Class1.java -: > Class2.java +: > Class.java +: > ClassDist.java +: > ClassNobase.java +: > ClassNobaseDist.java $ACLOCAL $AUTOCONF @@ -49,8 +58,11 @@ test ! -s stderr $MAKE distdir ls -l $distdir # For debugging. -test -f $distdir/Class1.java -test -f $distdir/Class2.java -test ! -f $distdir/Class3.java +test -f $distdir/Class.java +test -f $distdir/ClassDist.java +test -f $distdir/NobaseClass.java +test -f $distdir/NobaseClassDist.java +test ! -f $distdir/ClassNodist.java +test ! -f $distdir/NobaseClassNodist.java : diff --git a/tests/java-no-duplicate.test b/tests/java-no-duplicate.test index d5fec4bcc..ec42a3b09 100755 --- a/tests/java-no-duplicate.test +++ b/tests/java-no-duplicate.test @@ -26,6 +26,9 @@ javadir = $(datadir)/java java_JAVA = a.java dist_java_JAVA = b.java nodist_java_JAVA = c.java +nobase_java_JAVA = d.java +nobase_dist_java_JAVA = e.java +nobase_nodist_java_JAVA = f.java END $ACLOCAL diff --git a/tests/java-nobase.test b/tests/java-nobase.test new file mode 100755 index 000000000..7b55290f4 --- /dev/null +++ b/tests/java-nobase.test @@ -0,0 +1,67 @@ +#! /bin/sh +# Copyright (C) 2011 Free Software Foundation, Inc. +# +# This program 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. +# +# This program 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 this program. If not, see . + +# Test support of `nobase_' with the `JAVA' primary. + +required=javac +. ./defs || Exit 1 + +set -e + +cat >>configure.in <<'END' +AC_OUTPUT +END + +cat > Makefile.am << 'END' +javadir = $(datadir)/java +nobase_java_JAVA = sub/subsub/Foo.java +nobase_dist_java_JAVA = sub/Bar.java +nobase_nodist_java_JAVA = sub2/Baz.java + +# Java files are not distributed by default. +EXTRA_DIST = sub/subsub/Foo.java + +sub2/Baz.java: + rm -f $@ $@-t + test -d sub2 || mkdir sub2 + echo 'class Baz {}' > $@-t + chmod a-w $@-t && mv -f $@-t $@ + +.PHONY: test-install +test-install: + find $(prefix) ;: For debugging. + test -f $(javadir)/sub/subsub/Foo.class + test -f $(javadir)/sub/Bar.class + test -f $(javadir)/sub2/Baz.class +installcheck-local: test-install +DISTCLEANFILES = sub2/Baz.java +END + +mkdir sub sub/subsub +echo 'class Foo {}' > sub/subsub/Foo.java +echo 'class Bar {}' > sub/Bar.java + +$ACLOCAL +$AUTOCONF +$AUTOMAKE + +./configure --prefix="`pwd`"/_inst +$MAKE check +$MAKE install +$MAKE test-install +$MAKE distcheck + +: diff --git a/tests/java-sources.test b/tests/java-sources.test index 4a489e4f6..770eb2d16 100755 --- a/tests/java-sources.test +++ b/tests/java-sources.test @@ -31,6 +31,9 @@ foodir = $(prefix) foo_JAVA = a.java dist_foo_JAVA = b.java nodist_foo_JAVA = c.java +nobase_foo_JAVA = d.java +nobase_dist_foo_JAVA = e.java +nobase_nodist_foo_JAVA = f.java .PHONY: debug debug: @@ -48,6 +51,9 @@ cat > exp << 'END' a.java b.java c.java +d.java +e.java +f.java END ./configure