]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
java: allow both JAVA and nobase_JAVA in the same Makefile.am
authorStefano Lattarini <stefano.lattarini@gmail.com>
Mon, 12 Sep 2011 09:03:32 +0000 (11:03 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Mon, 12 Sep 2011 09:03:32 +0000 (11:03 +0200)
* 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

ChangeLog
automake.in
tests/Makefile.am
tests/Makefile.in
tests/java-clean.test
tests/java-compile-install.test
tests/java-mix.test [moved from tests/java-mix-dist-nodist.test with 63% similarity]
tests/java-no-duplicate.test
tests/java-nobase.test [new file with mode: 0755]
tests/java-sources.test

index 5c135e9c97a41181014fcc87eda6cc4492e8cb0d..1f7a263243de3cd89e4939b35da0f7eb62c65a5f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2011-04-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       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  <stefano.lattarini@gmail.com>
 
        java: allow both dist_JAVA and nodist_JAVA in the same Makefile.am
index 9ee515c96bd97cb1c5aa4b1c8682e6f9163692f6..208a66bf9461ea35c5d4818e734698f3dc82fa72 100755 (executable)
@@ -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';
index 7db542781ffee23453755b46a3b10f51f37ac75e..abbd8301d7c89ad6549e9fcf0c27fcb8457ebde7 100644 (file)
@@ -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 \
index f77c2754133fdc7277d41743e3b9b4d41389471a..ffb1764f3b256667576f36f9f2015174df435cbc 100644 (file)
@@ -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 \
index 4dcc966e2ff3a29218dbbeaba3c8eafc2bcda0d0..7db5e5371075154ae1a311059cab4e2cd515ffaa 100755 (executable)
@@ -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
 
 :
index b2145fbb0e380a941389669e58fc4528a01b3fd3..74b7a001feaeb0a08dfd4037642c51a06c734512 100755 (executable)
@@ -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
similarity index 63%
rename from tests/java-mix-dist-nodist.test
rename to tests/java-mix.test
index 786f400531d36f9da9474dde4931e68eec138895..1c8163ac157edf44037b4b53f31f8716a060f19a 100755 (executable)
@@ -14,8 +14,9 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# 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
 
 :
index d5fec4bccb34ae3a32f94e5aa37800d652c50d10..ec42a3b09075b24d6601782f0dcba9e87f065534 100755 (executable)
@@ -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 (executable)
index 0000000..7b55290
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.
+
+# 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
+
+:
index 4a489e4f66b89381957f753b75c0ffa1ffc04e2c..770eb2d165416641d7d228baeb8bf378ebed154c 100755 (executable)
@@ -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